diff options
author | richardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2> | 2008-05-11 13:43:46 +0000 |
---|---|---|
committer | richardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2> | 2008-05-11 13:43:46 +0000 |
commit | 3ba7f7d96aa075ac022abf54c87f9f67bcad40dd (patch) | |
tree | 452a690c95084e69f328ed94e1773295da28cdcc | |
parent | a66c254184447e424d8117f9d65395ee08012a8e (diff) | |
download | freertos-3ba7f7d96aa075ac022abf54c87f9f67bcad40dd.tar.gz freertos-3ba7f7d96aa075ac022abf54c87f9f67bcad40dd.tar.bz2 freertos-3ba7f7d96aa075ac022abf54c87f9f67bcad40dd.tar.xz |
First commit of PPC405 version with floating point included.
git-svn-id: https://freertos.svn.sourceforge.net/svnroot/freertos/trunk@350 1d2547de-c912-0410-9cb9-b8ca96c0e9e2
54 files changed, 22052 insertions, 0 deletions
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/FreeRTOSConfig.h b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/FreeRTOSConfig.h new file mode 100644 index 00000000..742c8202 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/FreeRTOSConfig.h @@ -0,0 +1,110 @@ +/*
+ FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+#ifndef FREERTOS_CONFIG_H
+#define FREERTOS_CONFIG_H
+
+/*-----------------------------------------------------------
+ * Application specific definitions.
+ *
+ * These definitions should be adjusted for your particular hardware and
+ * application requirements.
+ *
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
+ *----------------------------------------------------------*/
+#define configUSE_PREEMPTION 1
+#define configUSE_IDLE_HOOK 0
+#define configUSE_TICK_HOOK 0
+#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 250 )
+#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 200000000 ) /* Clock setup from start.asm in the demo application. */
+#define configTICK_RATE_HZ ( (portTickType) 1000 )
+#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 6 )
+#define configTOTAL_HEAP_SIZE ( (size_t) (80 * 1024) )
+#define configMAX_TASK_NAME_LEN ( 20 )
+#define configUSE_16_BIT_TICKS 1
+#define configIDLE_SHOULD_YIELD 1
+#define configUSE_MUTEXES 1
+#define configUSE_TRACE_FACILITY 0
+#define configCHECK_FOR_STACK_OVERFLOW 2
+#define configUSE_COUNTING_SEMAPHORES 1
+#define configUSE_APPLICATION_TASK_TAG 1
+#define configUSE_FPU 1
+
+
+/* Co-routine definitions. */
+#define configUSE_CO_ROUTINES 0
+#define configMAX_CO_ROUTINE_PRIORITIES ( 4 )
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+#define INCLUDE_vTaskPrioritySet 1
+#define INCLUDE_uxTaskPriorityGet 1
+#define INCLUDE_vTaskDelete 1
+#define INCLUDE_vTaskCleanUpResources 1
+#define INCLUDE_vTaskSuspend 1
+#define INCLUDE_vResumeFromISR 1
+#define INCLUDE_vTaskDelayUntil 1
+#define INCLUDE_vTaskDelay 1
+#define INCLUDE_xTaskGetSchedulerState 1
+#define INCLUDE_xTaskGetCurrentTaskHandle 1
+#define INCLUDE_uxTaskGetStackHighWaterMark 1
+#define configUSE_RECURSIVE_MUTEXES 1
+
+
+#if configUSE_FPU == 1
+ /* Include the header that define the traceTASK_SWITCHED_IN() and
+ traceTASK_SWITCHED_OUT() macros to save and restore the floating
+ point registers for tasks that have requested this behaviour. */
+ #include "FPU_Macros.h"
+#endif
+
+#endif /* FREERTOS_CONFIG_H */
+
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/RTOSDemo_linker_script.ld b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/RTOSDemo_linker_script.ld new file mode 100644 index 00000000..0a5bdac6 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/RTOSDemo_linker_script.ld @@ -0,0 +1,209 @@ +/*******************************************************************/
+/* */
+/* This file is automatically generated by linker script generator.*/
+/* */
+/* Version: Xilinx EDK 10.1.01 EDK_K_SP1.3 */
+/* */
+/* Copyright (c) 2004 Xilinx, Inc. All rights reserved. */
+/* */
+/* Description : PowerPC405 Linker Script */
+/* */
+/*******************************************************************/
+
+_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x400;
+_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x100;
+
+/* Define Memories in the system */
+
+MEMORY
+{
+ SRAM_C_MEM0_BASEADDR : ORIGIN = 0xFFF00000, LENGTH = 0x000FFFEC
+}
+
+/* Specify the default entry point to the program */
+
+ENTRY(_boot)
+STARTUP(boot.o)
+
+/* Define the sections, and where they are mapped in memory */
+
+SECTIONS
+{
+.vectors : {
+ __vectors_start = .;
+ *(.vectors)
+ __vectors_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.text : {
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+} > SRAM_C_MEM0_BASEADDR
+
+.init : {
+ KEEP (*(.init))
+} > SRAM_C_MEM0_BASEADDR
+
+.fini : {
+ KEEP (*(.fini))
+} > SRAM_C_MEM0_BASEADDR
+
+.rodata : {
+ __rodata_start = .;
+ *(.rodata)
+ *(.rodata.*)
+ *(.gnu.linkonce.r.*)
+ __rodata_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.sdata2 : {
+ __sdata2_start = .;
+ *(.sdata2)
+ *(.sdata2.*)
+ *(.gnu.linkonce.s2.*)
+ __sdata2_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.sbss2 : {
+ __sbss2_start = .;
+ *(.sbss2)
+ *(.sbss2.*)
+ *(.gnu.linkonce.sb2.*)
+ __sbss2_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.data : {
+ __data_start = .;
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d.*)
+ __data_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.got : {
+ *(.got)
+} > SRAM_C_MEM0_BASEADDR
+
+.got1 : {
+ *(.got1)
+} > SRAM_C_MEM0_BASEADDR
+
+.got2 : {
+ *(.got2)
+} > SRAM_C_MEM0_BASEADDR
+
+.ctors : {
+ __CTOR_LIST__ = .;
+ ___CTORS_LIST___ = .;
+ KEEP (*crtbegin.o(.ctors))
+ KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))
+ KEEP (*(SORT(.ctors.*)))
+ KEEP (*(.ctors))
+ __CTOR_END__ = .;
+ ___CTORS_END___ = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.dtors : {
+ __DTOR_LIST__ = .;
+ ___DTORS_LIST___ = .;
+ KEEP (*crtbegin.o(.dtors))
+ KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))
+ KEEP (*(SORT(.dtors.*)))
+ KEEP (*(.dtors))
+ __DTOR_END__ = .;
+ ___DTORS_END___ = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.fixup : {
+ __fixup_start = .;
+ *(.fixup)
+ __fixup_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.eh_frame : {
+ *(.eh_frame)
+} > SRAM_C_MEM0_BASEADDR
+
+.jcr : {
+ *(.jcr)
+} > SRAM_C_MEM0_BASEADDR
+
+.gcc_except_table : {
+ *(.gcc_except_table)
+} > SRAM_C_MEM0_BASEADDR
+
+.sdata : {
+ __sdata_start = .;
+ *(.sdata)
+ *(.sdata.*)
+ *(.gnu.linkonce.s.*)
+ __sdata_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.sbss : {
+ __sbss_start = .;
+ *(.sbss)
+ *(.sbss.*)
+ *(.gnu.linkonce.sb.*)
+ __sbss_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.tdata : {
+ __tdata_start = .;
+ *(.tdata)
+ *(.tdata.*)
+ *(.gnu.linkonce.td.*)
+ __tdata_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.tbss : {
+ __tbss_start = .;
+ *(.tbss)
+ *(.tbss.*)
+ *(.gnu.linkonce.tb.*)
+ __tbss_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.bss : {
+ __bss_start = .;
+ *(.bss)
+ *(.bss.*)
+ *(.gnu.linkonce.b.*)
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.boot0 0xFFFFFFEC : {
+ __boot0_start = .;
+ *(.boot0)
+ __boot0_end = .;
+}
+
+.boot 0xFFFFFFFC : {
+ __boot_start = .;
+ *(.boot)
+ __boot_end = .;
+}
+
+/* Generate Stack and Heap Sections */
+
+.stack : {
+ _stack_end = .;
+ . += _STACK_SIZE;
+ . = ALIGN(16);
+ __stack = .;
+} > SRAM_C_MEM0_BASEADDR
+
+.heap : {
+ . = ALIGN(16);
+ _heap_start = .;
+ . += _HEAP_SIZE;
+ . = ALIGN(16);
+ _heap_end = .;
+ _end = .;
+} > SRAM_C_MEM0_BASEADDR
+
+}
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop-reg-test.c b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop-reg-test.c new file mode 100644 index 00000000..53d60d49 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop-reg-test.c @@ -0,0 +1,235 @@ +/*
+ FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+/*
+ * Tests the floating point context save and restore mechanism.
+ *
+ * Two tasks are created - each of which is allocated a buffer of
+ * portNO_FLOP_REGISTERS_TO_SAVE 32bit variables into which the flop context
+ * of the task is saved when the task is switched out, and from which the
+ * flop context of the task is restored when the task is switch in. Prior to
+ * the tasks being created each position in the two buffers is filled with a
+ * unique value - this way the flop context of each task is different.
+ *
+ * The two test tasks never block so are always in either the Running or
+ * Ready state. They execute at the lowest priority so will get pre-empted
+ * regularly, although the yield frequently so will not get much execution
+ * time. The lack of execution time is not a problem as its only the
+ * switching in and out that is being tested.
+ *
+ * Whenever a task is moved from the Ready to the Running state its flop
+ * context will be loaded from the buffer, but while the task is in the
+ * Running state the buffer is not used and can contain any value - in this
+ * case and for test purposes the task itself clears the buffer to zero.
+ * The next time the task is moved out of the Running state into the
+ * Ready state the flop context will once more get saved to the buffer -
+ * overwriting the zeros.
+ *
+ * Therefore whenever the task is not in the Running state its buffer contains
+ * the most recent values of its floating point registers - the zeroing out
+ * of the buffer while the task was executing being used to ensure the values
+ * the buffer contains are not stale.
+ *
+ * When neither test task is in the Running state the buffers should contain
+ * the unique values allocated before the tasks were created. If so then
+ * the floating point context has been maintained. This check is performed
+ * by the 'check' task (defined in main.c) by calling
+ * xAreFlopRegisterTestsStillRunning().
+ *
+ * The test tasks also increment a value each time they execute.
+ * xAreFlopRegisterTestsStillRunning() also checks that this value has changed
+ * since it last ran to ensure the test tasks are still getting processing time.
+ */
+
+/* Standard includes files. */
+#include <string.h>
+
+/* Scheduler include files. */
+#include "FreeRTOS.h"
+#include "task.h"
+
+/*-----------------------------------------------------------*/
+
+#define flopNUMBER_OF_TASKS 2
+#define flopSTART_VALUE ( 0x1 )
+
+/*-----------------------------------------------------------*/
+
+/* The two test tasks as described at the top of this file. */
+static void vFlopTest1( void *pvParameters );
+static void vFlopTest2( void *pvParameters );
+
+/*-----------------------------------------------------------*/
+
+/* Buffers into which the flop registers will be saved. There is a buffer for
+both tasks. */
+static unsigned portLONG ulFlopRegisters[ flopNUMBER_OF_TASKS ][ portNO_FLOP_REGISTERS_TO_SAVE ] = { 0 };
+
+/* Variables that are incremented by the tasks to indicate that they are still
+running. */
+static volatile unsigned portLONG ulFlop1CycleCount = 0, ulFlop2CycleCount = 0;
+
+/*-----------------------------------------------------------*/
+
+void vStartFlopRegTests( void )
+{
+xTaskHandle xTaskJustCreated;
+unsigned portBASE_TYPE x, y, z = flopSTART_VALUE;
+
+ /* Fill the arrays into which the flop registers are to be saved with
+ known values. These are the values that will be written to the flop
+ registers when the tasks start, and as the tasks do not perform any
+ flop operations the values should never change. Each position in the
+ buffer contains a different value so the flop context of each task
+ will be different. */
+ for( x = 0; x < flopNUMBER_OF_TASKS; x++ )
+ {
+ for( y = 0; y < ( portNO_FLOP_REGISTERS_TO_SAVE - 1); y++ )
+ {
+ ulFlopRegisters[ x ][ y ] = z;
+ z++;
+ }
+ }
+
+
+ /* Create the first task. */
+ xTaskCreate( vFlopTest1, ( signed portCHAR * ) "flop1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xTaskJustCreated );
+
+ /* The task tag value is a value that can be associated with a task, but
+ is not used by the scheduler itself. Its use is down to the application so
+ it makes a convenient place in this case to store the pointer to the buffer
+ into which the flop context of the task will be stored. The first created
+ task uses ulFlopRegisters[ 0 ], the second ulFlopRegisters[ 1 ]. */
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 0 ][ 0 ] ) );
+
+ /* Do the same for the second task. */
+ xTaskCreate( vFlopTest2, ( signed portCHAR * ) "flop2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 1 ][ 0 ] ) );
+}
+/*-----------------------------------------------------------*/
+
+static void vFlopTest1( void *pvParameters )
+{
+ for( ;; )
+ {
+ /* The values from the buffer should have now been written to the flop
+ registers. Clear the buffer to ensure the same values then get written
+ back the next time the task runs. Being preempted during this memset
+ could cause the test to fail, hence the critical section. */
+ portENTER_CRITICAL();
+ memset( ulFlopRegisters[ 0 ], 0x00, ( portNO_FLOP_REGISTERS_TO_SAVE * sizeof( unsigned portBASE_TYPE ) ) );
+ portEXIT_CRITICAL();
+
+ /* We don't have to do anything other than indicate that we are
+ still running. */
+ ulFlop1CycleCount++;
+ taskYIELD();
+ }
+}
+/*-----------------------------------------------------------*/
+
+static void vFlopTest2( void *pvParameters )
+{
+ for( ;; )
+ {
+ /* The values from the buffer should have now been written to the flop
+ registers. Clear the buffer to ensure the same values then get written
+ back the next time the task runs. */
+ portENTER_CRITICAL();
+ memset( ulFlopRegisters[ 1 ], 0x00, ( portNO_FLOP_REGISTERS_TO_SAVE * sizeof( unsigned portBASE_TYPE ) ) );
+ portEXIT_CRITICAL();
+
+ /* We don't have to do anything other than indicate that we are
+ still running. */
+ ulFlop2CycleCount++;
+ taskYIELD();
+ }
+}
+/*-----------------------------------------------------------*/
+
+portBASE_TYPE xAreFlopRegisterTestsStillRunning( void )
+{
+portBASE_TYPE xReturn = pdPASS;
+unsigned portBASE_TYPE x, y, z = flopSTART_VALUE;
+
+ /* Called from the 'check' task.
+
+ The flop tasks cannot be currently running, check their saved registers
+ are as expected. The tests tasks do not perform any flop operations so
+ their registers should be as per their initial setting. */
+ for( x = 0; x < flopNUMBER_OF_TASKS; x++ )
+ {
+ for( y = 0; y < ( portNO_FLOP_REGISTERS_TO_SAVE - 1 ); y++ )
+ {
+ if( ulFlopRegisters[ x ][ y ] != z )
+ {
+ xReturn = pdFAIL;
+ break;
+ }
+
+ z++;
+ }
+ }
+
+ /* Check both tasks have actually been swapped in and out since this function
+ last executed. */
+ if( ulFlop1CycleCount == 0 )
+ {
+ xReturn = pdFAIL;
+ }
+
+ if( ulFlop2CycleCount == 0 )
+ {
+ xReturn = pdFAIL;
+ }
+
+ ulFlop1CycleCount = 0;
+ ulFlop2CycleCount = 0;
+}
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop-reg-test.h b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop-reg-test.h new file mode 100644 index 00000000..ecf30d50 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop-reg-test.h @@ -0,0 +1,56 @@ +/*
+ FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+#ifndef FLOP_REG_TEST_H
+#define FLOP_REG_TEST_H
+
+void vStartFlopRegTests( void );
+portBASE_TYPE xAreFlopRegisterTestsStillRunning( void );
+
+#endif
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop.c b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop.c new file mode 100644 index 00000000..8c424866 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/flop/flop.c @@ -0,0 +1,400 @@ +/*
+ FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+/*
+ * Creates eight tasks, each of which loops continuously performing a
+ * floating point calculation.
+ *
+ * All the tasks run at the idle priority and never block or yield. This causes
+ * all eight tasks to time slice with the idle task. Running at the idle priority
+ * means that these tasks will get pre-empted any time another task is ready to run
+ * or a time slice occurs. More often than not the pre-emption will occur mid
+ * calculation, creating a good test of the schedulers context switch mechanism - a
+ * calculation producing an unexpected result could be a symptom of a corruption in
+ * the context of a task.
+ *
+ * This file demonstrates the use of the task tag and traceTASK_SWITCHED_IN and
+ * traceTASK_SWITCHED_OUT macros to save and restore the floating point context.
+ */
+
+#include <stdlib.h>
+#include <math.h>
+
+/* Scheduler include files. */
+#include "FreeRTOS.h"
+#include "task.h"
+
+/* Demo program include files. */
+#include "flop.h"
+
+/* Misc. definitions. */
+#define mathSTACK_SIZE configMINIMAL_STACK_SIZE
+#define mathNUMBER_OF_TASKS ( 8 )
+
+/* Four tasks, each of which performs a different floating point calculation.
+Each of the four is created twice. */
+static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters );
+static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters );
+static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters );
+static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters );
+
+/* These variables are used to check that all the tasks are still running. If a
+task gets a calculation wrong it will stop incrementing its check variable. */
+static volatile unsigned portSHORT usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };
+
+/* Buffers into which the flop registers will be saved. There is a buffer for
+each task created within this file. Zeroing out this array is the normal and
+safe option as this will cause the task to start with all zeros in its flop
+context. */
+static unsigned portLONG ulFlopRegisters[ mathNUMBER_OF_TASKS ][ portNO_FLOP_REGISTERS_TO_SAVE ] = { 0 };
+
+/*-----------------------------------------------------------*/
+
+void vStartMathTasks( unsigned portBASE_TYPE uxPriority )
+{
+xTaskHandle xTaskJustCreated;
+portBASE_TYPE x, y;
+
+ /* Place known values into the buffers into which the flop registers are
+ to be saved. This is for debug purposes only, it is not normally
+ required. The last position in each array is left at zero as the status
+ register will be loaded from there.
+
+ It is intended that these values can be viewed being loaded into the
+ flop registers when a task is started - however the Insight debugger
+ does not seem to want to show the flop register values. */
+ for( x = 0; x < mathNUMBER_OF_TASKS; x++ )
+ {
+ for( y = 0; y < ( portNO_FLOP_REGISTERS_TO_SAVE - 1 ); y++ )
+ {
+ ulFlopRegisters[ x ][ y ] = ( x + 1 );
+ }
+ }
+
+ /* Create the first task - passing it the address of the check variable
+ that it is going to increment. This check variable is used as an
+ indication that the task is still running. */
+ xTaskCreate( vCompetingMathTask1, ( signed portCHAR * ) "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, &xTaskJustCreated );
+
+ /* The task tag value is a value that can be associated with a task, but
+ is not used by the scheduler itself. Its use is down to the application so
+ it makes a convenient place in this case to store the pointer to the buffer
+ into which the flop context of the task will be stored. The first created
+ task uses ulFlopRegisters[ 0 ], the second ulFlopRegisters[ 1 ], etc. */
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 0 ][ 0 ] ) );
+
+ /* Create another 7 tasks, allocating a buffer for each. */
+ xTaskCreate( vCompetingMathTask2, ( signed portCHAR * ) "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 1 ][ 0 ] ) );
+
+ xTaskCreate( vCompetingMathTask3, ( signed portCHAR * ) "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 2 ][ 0 ] ) );
+
+ xTaskCreate( vCompetingMathTask4, ( signed portCHAR * ) "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 3 ][ 0 ] ) );
+
+ xTaskCreate( vCompetingMathTask1, ( signed portCHAR * ) "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 4 ][ 0 ] ) );
+
+ xTaskCreate( vCompetingMathTask2, ( signed portCHAR * ) "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 5 ][ 0 ] ) );
+
+ xTaskCreate( vCompetingMathTask3, ( signed portCHAR * ) "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 6 ][ 0 ] ) );
+
+ xTaskCreate( vCompetingMathTask4, ( signed portCHAR * ) "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, &xTaskJustCreated );
+ vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 7 ][ 0 ] ) );
+}
+/*-----------------------------------------------------------*/
+
+static portTASK_FUNCTION( vCompetingMathTask1, pvParameters )
+{
+volatile portFLOAT d1, d2, d3, d4;
+volatile unsigned portSHORT *pusTaskCheckVariable;
+volatile portFLOAT dAnswer;
+portSHORT sError = pdFALSE;
+
+ d1 = 123.4567;
+ d2 = 2345.6789;
+ d3 = -918.222;
+
+ dAnswer = ( d1 + d2 ) * d3;
+
+ /* The variable this task increments to show it is still running is passed in
+ as the parameter. */
+ pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
+
+ /* Keep performing a calculation and checking the result against a constant. */
+ for(;;)
+ {
+ d1 = 123.4567;
+ d2 = 2345.6789;
+ d3 = -918.222;
+
+ d4 = ( d1 + d2 ) * d3;
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ /* If the calculation does not match the expected constant, stop the
+ increment of the check variable. */
+ if( fabs( d4 - dAnswer ) > 0.001 )
+ {
+ sError = pdTRUE;
+ }
+
+ if( sError == pdFALSE )
+ {
+ /* If the calculation has always been correct, increment the check
+ variable so we know this task is still running okay. */
+ ( *pusTaskCheckVariable )++;
+ }
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ }
+}
+/*-----------------------------------------------------------*/
+
+static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )
+{
+volatile portFLOAT d1, d2, d3, d4;
+volatile unsigned portSHORT *pusTaskCheckVariable;
+volatile portFLOAT dAnswer;
+portSHORT sError = pdFALSE;
+
+ d1 = -389.38;
+ d2 = 32498.2;
+ d3 = -2.0001;
+
+ dAnswer = ( d1 / d2 ) * d3;
+
+
+ /* The variable this task increments to show it is still running is passed in
+ as the parameter. */
+ pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
+
+ /* Keep performing a calculation and checking the result against a constant. */
+ for( ;; )
+ {
+ d1 = -389.38;
+ d2 = 32498.2;
+ d3 = -2.0001;
+
+ d4 = ( d1 / d2 ) * d3;
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ /* If the calculation does not match the expected constant, stop the
+ increment of the check variable. */
+ if( fabs( d4 - dAnswer ) > 0.001 )
+ {
+ sError = pdTRUE;
+ }
+
+ if( sError == pdFALSE )
+ {
+ /* If the calculation has always been correct, increment the check
+ variable so we know
+ this task is still running okay. */
+ ( *pusTaskCheckVariable )++;
+ }
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+ }
+}
+/*-----------------------------------------------------------*/
+
+static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )
+{
+volatile portFLOAT *pdArray, dTotal1, dTotal2, dDifference;
+volatile unsigned portSHORT *pusTaskCheckVariable;
+const size_t xArraySize = 10;
+size_t xPosition;
+portSHORT sError = pdFALSE;
+
+ /* The variable this task increments to show it is still running is passed in
+ as the parameter. */
+ pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
+
+ pdArray = ( portFLOAT * ) pvPortMalloc( xArraySize * sizeof( portFLOAT ) );
+
+ /* Keep filling an array, keeping a running total of the values placed in the
+ array. Then run through the array adding up all the values. If the two totals
+ do not match, stop the check variable from incrementing. */
+ for( ;; )
+ {
+ dTotal1 = 0.0;
+ dTotal2 = 0.0;
+
+ for( xPosition = 0; xPosition < xArraySize; xPosition++ )
+ {
+ pdArray[ xPosition ] = ( portFLOAT ) xPosition + 5.5;
+ dTotal1 += ( portFLOAT ) xPosition + 5.5;
+ }
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ for( xPosition = 0; xPosition < xArraySize; xPosition++ )
+ {
+ dTotal2 += pdArray[ xPosition ];
+ }
+
+ dDifference = dTotal1 - dTotal2;
+ if( fabs( dDifference ) > 0.001 )
+ {
+ sError = pdTRUE;
+ }
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ if( sError == pdFALSE )
+ {
+ /* If the calculation has always been correct, increment the check
+ variable so we know this task is still running okay. */
+ ( *pusTaskCheckVariable )++;
+ }
+ }
+}
+/*-----------------------------------------------------------*/
+
+static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )
+{
+volatile portFLOAT *pdArray, dTotal1, dTotal2, dDifference;
+volatile unsigned portSHORT *pusTaskCheckVariable;
+const size_t xArraySize = 10;
+size_t xPosition;
+portSHORT sError = pdFALSE;
+
+ /* The variable this task increments to show it is still running is passed in
+ as the parameter. */
+ pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;
+
+ pdArray = ( portFLOAT * ) pvPortMalloc( xArraySize * sizeof( portFLOAT ) );
+
+ /* Keep filling an array, keeping a running total of the values placed in the
+ array. Then run through the array adding up all the values. If the two totals
+ do not match, stop the check variable from incrementing. */
+ for( ;; )
+ {
+ dTotal1 = 0.0;
+ dTotal2 = 0.0;
+
+ for( xPosition = 0; xPosition < xArraySize; xPosition++ )
+ {
+ pdArray[ xPosition ] = ( portFLOAT ) xPosition * 12.123;
+ dTotal1 += ( portFLOAT ) xPosition * 12.123;
+ }
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ for( xPosition = 0; xPosition < xArraySize; xPosition++ )
+ {
+ dTotal2 += pdArray[ xPosition ];
+ }
+
+ dDifference = dTotal1 - dTotal2;
+ if( fabs( dDifference ) > 0.001 )
+ {
+ sError = pdTRUE;
+ }
+
+ #if configUSE_PREEMPTION == 0
+ taskYIELD();
+ #endif
+
+ if( sError == pdFALSE )
+ {
+ /* If the calculation has always been correct, increment the check
+ variable so we know this task is still running okay. */
+ ( *pusTaskCheckVariable )++;
+ }
+ }
+}
+/*-----------------------------------------------------------*/
+
+/* This is called to check that all the created tasks are still running. */
+portBASE_TYPE xAreMathsTaskStillRunning( void )
+{
+/* Keep a history of the check variables so we know if they have been incremented
+since the last call. */
+static unsigned portSHORT usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };
+portBASE_TYPE xReturn = pdTRUE, xTask;
+
+ /* Check the maths tasks are still running by ensuring their check variables
+ are still incrementing. */
+ for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )
+ {
+ if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] )
+ {
+ /* The check has not incremented so an error exists. */
+ xReturn = pdFALSE;
+ }
+
+ usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ];
+ }
+
+ return xReturn;
+}
+
+
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/main.c b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/main.c new file mode 100644 index 00000000..51e1c5f6 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/main.c @@ -0,0 +1,686 @@ +/* + FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + *************************************************************************** + * * + * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, * + * and even write all or part of your application on your behalf. * + * See http://www.OpenRTOS.com for details of the services we provide to * + * expedite your project. * + * * + *************************************************************************** + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + http://www.FreeRTOS.org - Documentation, latest information, license and + contact details. + + http://www.SafeRTOS.com - A version that is certified for use in safety + critical systems. + + http://www.OpenRTOS.com - Commercial support, development, porting, + licensing and training services. +*/ + +/* + * Creates all the demo application tasks, then starts the scheduler. The WEB + * documentation provides more details of the demo application tasks. + * + * In addition to the standard demo tasks, the follow demo specific tasks are + * create: + * + * The "Check" task. This only executes every three seconds but has the highest + * priority so is guaranteed to get processor time. Its main function is to + * check that all the other tasks are still operational. Most tasks maintain + * a unique count that is incremented each time the task successfully completes + * its function. Should any error occur within such a task the count is + * permanently halted. The check task inspects the count of each task to ensure + * it has changed since the last time the check task executed. If all the count + * variables have changed all the tasks are still executing error free, and the + * check task toggles the onboard LED. Should any task contain an error at any time + * the LED toggle rate will change from 3 seconds to 500ms. + * + * The "Register Check" tasks. These tasks fill the CPU registers with known + * values, then check that each register still contains the expected value, the + * discovery of an unexpected value being indicative of an error in the RTOS + * context switch mechanism. The register check tasks operate at low priority + * so are switched in and out frequently. + * + */ + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Xilinx library includes. */ +#include "xcache_l.h" +#include "xintc.h" + +/* Demo application includes. */ +#include "flash.h" +#include "integer.h" +#include "comtest2.h" +#include "semtest.h" +#include "BlockQ.h" +#include "dynamic.h" +#include "GenQTest.h" +#include "QPeek.h" +#include "blocktim.h" +#include "death.h" +#include "partest.h" +#include "countsem.h" +#include "recmutex.h"
+#include "flop.h"
+#include "flop-reg-test.h" + +/* Priorities assigned to the demo tasks. */ +#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 ) +#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 ) +#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 ) +#define mainQUEUE_BLOCK_PRIORITY ( tskIDLE_PRIORITY + 1 ) +#define mainDEATH_PRIORITY ( tskIDLE_PRIORITY + 1 ) +#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) +#define mainGENERIC_QUEUE_PRIORITY ( tskIDLE_PRIORITY ) +#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )
+#define mainFLOP_PRIORITY ( tskIDLE_PRIORITY ) + +/* The first LED used by the COM test and check tasks respectively. */ +#define mainCOM_TEST_LED ( 4 ) +#define mainCHECK_TEST_LED ( 3 ) + +/* The baud rate used by the comtest tasks is set by the hardware, so the +baud rate parameters passed into the comtest initialisation has no effect. */ +#define mainBAUD_SET_IN_HARDWARE ( 0 ) + +/* Delay periods used by the check task. If no errors have been found then +the check LED will toggle every mainNO_ERROR_CHECK_DELAY milliseconds. If an +error has been found at any time then the toggle rate will increase to +mainERROR_CHECK_DELAY milliseconds. */ +#define mainNO_ERROR_CHECK_DELAY ( ( portTickType ) 3000 / portTICK_RATE_MS ) +#define mainERROR_CHECK_DELAY ( ( portTickType ) 500 / portTICK_RATE_MS ) + + +/* + * The tasks defined within this file - described within the comments at the + * head of this page. + */ +static void prvRegTestTask1( void *pvParameters ); +static void prvRegTestTask2( void *pvParameters ); +static void prvErrorChecks( void *pvParameters ); + +/* + * Called by the 'check' task to inspect all the standard demo tasks within + * the system, as described within the comments at the head of this page. + */ +static portSHORT prvCheckOtherTasksAreStillRunning( void ); + +/* + * Perform any hardware initialisation required by the demo application. + */ +static void prvSetupHardware( void ); + +/*-----------------------------------------------------------*/ + +/* xRegTestStatus will get set to pdFAIL by the regtest tasks if they +discover an unexpected value. */ +static unsigned portBASE_TYPE xRegTestStatus = pdPASS; + +/* Counters used to ensure the regtest tasks are still running. */ +static volatile unsigned portLONG ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL; + +/*-----------------------------------------------------------*/ +
+int main( void ) +{
+
+ /* Must be called prior to installing any interrupt handlers! */ + vPortSetupInterruptController(); + + /* In this case prvSetupHardware() just enables the caches and and + configures the IO ports for the LED outputs. */ + prvSetupHardware(); + + /* Start the standard demo application tasks. Note that the baud rate used + by the comtest tasks is set by the hardware, so the baud rate parameter + passed has no effect. */ + vStartLEDFlashTasks( mainLED_TASK_PRIORITY ); + vStartIntegerMathTasks( tskIDLE_PRIORITY ); + vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainBAUD_SET_IN_HARDWARE, mainCOM_TEST_LED ); + vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); + vStartBlockingQueueTasks ( mainQUEUE_BLOCK_PRIORITY ); + vStartDynamicPriorityTasks(); + vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY ); + vStartQueuePeekTasks(); + vCreateBlockTimeTasks(); + vStartCountingSemaphoreTasks(); + vStartRecursiveMutexTasks();
+
+ #if ( configUSE_FPU == 1 )
+ vStartMathTasks( mainFLOP_PRIORITY );
+ vStartFlopRegTests();
+ #endif + + /* Create the tasks defined within this file. */ + xTaskCreate( prvRegTestTask1, "Regtest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvRegTestTask2, "Regtest2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL ); + xTaskCreate( prvErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); + + /* The suicide tasks must be started last as they record the number of other + tasks that exist within the system. The value is then used to ensure at run + time the number of tasks that exists is within expected bounds. */ + vCreateSuicidalTasks( mainDEATH_PRIORITY ); + + /* Now start the scheduler. Following this call the created tasks should + be executing. */ + vTaskStartScheduler( ); + + /* vTaskStartScheduler() will only return if an error occurs while the + idle task is being created. */ + for( ;; ); + + return 0; +} +/*-----------------------------------------------------------*/ + +static portSHORT prvCheckOtherTasksAreStillRunning( void ) +{ +portBASE_TYPE lReturn = pdPASS; +static unsigned portLONG ulLastRegTest1Counter= 0UL, ulLastRegTest2Counter = 0UL; + + /* The demo tasks maintain a count that increments every cycle of the task + provided that the task has never encountered an error. This function + checks the counts maintained by the tasks to ensure they are still being + incremented. A count remaining at the same value between calls therefore + indicates that an error has been detected. */ + + if( xAreIntegerMathsTaskStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreComTestTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreSemaphoreTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreBlockingQueuesStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreDynamicPriorityTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xIsCreateTaskStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreBlockTimeTestTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreGenericQueueTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreQueuePeekTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } + + if( xAreRecursiveMutexTasksStillRunning() != pdTRUE ) + { + lReturn = pdFAIL; + } +
+ #if ( configUSE_FPU == 1 )
+ if( xAreMathsTaskStillRunning() != pdTRUE )
+ {
+ lReturn = pdFAIL;
+ }
+
+ if( xAreFlopRegisterTestsStillRunning() != pdTRUE )
+ {
+ lReturn = pdFAIL;
+ }
+ #endif
+ + /* Have the register test tasks found any errors? */ + if( xRegTestStatus != pdPASS ) + { + lReturn = pdFAIL; + } + + /* Are the register test tasks still looping? */ + if( ulLastRegTest1Counter == ulRegTest1Counter ) + { + lReturn = pdFAIL; + } + else + { + ulLastRegTest1Counter = ulRegTest1Counter; + } + + if( ulLastRegTest2Counter == ulRegTest2Counter ) + { + lReturn = pdFAIL; + } + else + { + ulLastRegTest2Counter = ulRegTest2Counter; + } + + return lReturn; +} +/*-----------------------------------------------------------*/ + +static void prvErrorChecks( void *pvParameters ) +{ +portTickType xDelayPeriod = mainNO_ERROR_CHECK_DELAY, xLastExecutionTime; +volatile unsigned portBASE_TYPE uxFreeStack; + + /* This call is just to demonstrate the use of the function - nothing is + done with the value. You would expect the stack high water mark to be + lower (the function to return a larger value) here at function entry than + later following calls to other functions. */ + uxFreeStack = uxTaskGetStackHighWaterMark( NULL ); + + /* Initialise xLastExecutionTime so the first call to vTaskDelayUntil() + works correctly. */ + xLastExecutionTime = xTaskGetTickCount(); + + /* Cycle for ever, delaying then checking all the other tasks are still + operating without error. */ + for( ;; ) + { + /* Again just for demo purposes - uxFreeStack should have a lower value + here than following the call to uxTaskGetStackHighWaterMark() on the + task entry. */ + uxFreeStack = uxTaskGetStackHighWaterMark( NULL ); + + /* Wait until it is time to check again. The time we wait here depends + on whether an error has been detected or not. When an error is + detected the time is shortened resulting in a faster LED flash rate. */ + vTaskDelayUntil( &xLastExecutionTime, xDelayPeriod ); + + /* See if the other tasks are all ok. */ + if( prvCheckOtherTasksAreStillRunning() != pdPASS ) + { + /* An error occurred in one of the tasks so shorten the delay + period - which has the effect of increasing the frequency of the + LED toggle. */ + xDelayPeriod = mainERROR_CHECK_DELAY; + } + + /* Flash! */ + vParTestToggleLED( mainCHECK_TEST_LED ); + } +} +/*-----------------------------------------------------------*/ + +static void prvSetupHardware( void ) +{ + XCache_EnableICache( 0x80000000 ); + XCache_EnableDCache( 0x80000000 ); + + /* Setup the IO port for use with the LED outputs. */ + vParTestInitialise(); +} +/*-----------------------------------------------------------*/ + +void prvRegTest1Pass( void ) +{ + /* Called from the inline assembler - this cannot be static + otherwise it can get optimised away. */ + ulRegTest1Counter++; +} +/*-----------------------------------------------------------*/ + +void prvRegTest2Pass( void ) +{ + /* Called from the inline assembler - this cannot be static + otherwise it can get optimised away. */ + ulRegTest2Counter++; +} +/*-----------------------------------------------------------*/ + +void prvRegTestFail( void ) +{ + /* Called from the inline assembler - this cannot be static + otherwise it can get optimised away. */ + xRegTestStatus = pdFAIL; +} +/*-----------------------------------------------------------*/ + +static void prvRegTestTask1( void *pvParameters ) +{ + /* The first register test task as described at the top of this file. The + values used in the registers are different to those use in the second + register test task. Also, unlike the second register test task, this task + yields between setting the register values and subsequently checking the + register values. */ + asm volatile + ( + "RegTest1Start: \n\t" \ + " \n\t" \ + " li 0, 301 \n\t" \ + " mtspr 256, 0 #USPRG0 \n\t" \ + " li 0, 501 \n\t" \ + " mtspr 8, 0 #LR \n\t" \ + " li 0, 4 \n\t" \ + " mtspr 1, 0 #XER \n\t" \ + " \n\t" \ + " li 0, 1 \n\t" \ + " li 2, 2 \n\t" \ + " li 3, 3 \n\t" \ + " li 4, 4 \n\t" \ + " li 5, 5 \n\t" \ + " li 6, 6 \n\t" \ + " li 7, 7 \n\t" \ + " li 8, 8 \n\t" \ + " li 9, 9 \n\t" \ + " li 10, 10 \n\t" \ + " li 11, 11 \n\t" \ + " li 12, 12 \n\t" \ + " li 13, 13 \n\t" \ + " li 14, 14 \n\t" \ + " li 15, 15 \n\t" \ + " li 16, 16 \n\t" \ + " li 17, 17 \n\t" \ + " li 18, 18 \n\t" \ + " li 19, 19 \n\t" \ + " li 20, 20 \n\t" \ + " li 21, 21 \n\t" \ + " li 22, 22 \n\t" \ + " li 23, 23 \n\t" \ + " li 24, 24 \n\t" \ + " li 25, 25 \n\t" \ + " li 26, 26 \n\t" \ + " li 27, 27 \n\t" \ + " li 28, 28 \n\t" \ + " li 29, 29 \n\t" \ + " li 30, 30 \n\t" \ + " li 31, 31 \n\t" \ + " \n\t" \ + " sc \n\t" \ + " nop \n\t" \ + " \n\t" \ + " cmpwi 0, 1 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 2, 2 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 3, 3 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 4, 4 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 5, 5 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 6, 6 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 7, 7 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 8, 8 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 9, 9 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 10, 10 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 11, 11 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 12, 12 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 13, 13 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 14, 14 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 15, 15 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 16, 16 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 17, 17 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 18, 18 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 19, 19 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 20, 20 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 21, 21 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 22, 22 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 23, 23 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 24, 24 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 25, 25 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 26, 26 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 27, 27 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 28, 28 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 29, 29 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 30, 30 \n\t" \ + " bne RegTest1Fail \n\t" \ + " cmpwi 31, 31 \n\t" \ + " bne RegTest1Fail \n\t" \ + " \n\t" \ + " mfspr 0, 256 #USPRG0 \n\t" \ + " cmpwi 0, 301 \n\t" \ + " bne RegTest1Fail \n\t" \ + " mfspr 0, 8 #LR \n\t" \ + " cmpwi 0, 501 \n\t" \ + " bne RegTest1Fail \n\t" \ + " mfspr 0, 1 #XER \n\t" \ + " cmpwi 0, 4 \n\t" \ + " bne RegTest1Fail \n\t" \ + " \n\t" \ + " bl prvRegTest1Pass \n\t" \ + " b RegTest1Start \n\t" \ + " \n\t" \ + "RegTest1Fail: \n\t" \ + " \n\t" \ + " \n\t" \ + " bl prvRegTestFail \n\t" \ + " b RegTest1Start \n\t" \ + ); +} +/*-----------------------------------------------------------*/ + +static void prvRegTestTask2( void *pvParameters ) +{ + /* The second register test task as described at the top of this file. + Note that this task fills the registers with different values to the + first register test task. */ + asm volatile + ( + "RegTest2Start: \n\t" \ + " \n\t" \ + " li 0, 300 \n\t" \ + " mtspr 256, 0 #USPRG0 \n\t" \ + " li 0, 500 \n\t" \ + " mtspr 8, 0 #LR \n\t" \ + " li 0, 4 \n\t" \ + " mtspr 1, 0 #XER \n\t" \ + " \n\t" \ + " li 0, 11 \n\t" \ + " li 2, 12 \n\t" \ + " li 3, 13 \n\t" \ + " li 4, 14 \n\t" \ + " li 5, 15 \n\t" \ + " li 6, 16 \n\t" \ + " li 7, 17 \n\t" \ + " li 8, 18 \n\t" \ + " li 9, 19 \n\t" \ + " li 10, 110 \n\t" \ + " li 11, 111 \n\t" \ + " li 12, 112 \n\t" \ + " li 13, 113 \n\t" \ + " li 14, 114 \n\t" \ + " li 15, 115 \n\t" \ + " li 16, 116 \n\t" \ + " li 17, 117 \n\t" \ + " li 18, 118 \n\t" \ + " li 19, 119 \n\t" \ + " li 20, 120 \n\t" \ + " li 21, 121 \n\t" \ + " li 22, 122 \n\t" \ + " li 23, 123 \n\t" \ + " li 24, 124 \n\t" \ + " li 25, 125 \n\t" \ + " li 26, 126 \n\t" \ + " li 27, 127 \n\t" \ + " li 28, 128 \n\t" \ + " li 29, 129 \n\t" \ + " li 30, 130 \n\t" \ + " li 31, 131 \n\t" \ + " \n\t" \ + " cmpwi 0, 11 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 2, 12 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 3, 13 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 4, 14 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 5, 15 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 6, 16 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 7, 17 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 8, 18 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 9, 19 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 10, 110 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 11, 111 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 12, 112 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 13, 113 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 14, 114 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 15, 115 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 16, 116 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 17, 117 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 18, 118 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 19, 119 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 20, 120 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 21, 121 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 22, 122 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 23, 123 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 24, 124 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 25, 125 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 26, 126 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 27, 127 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 28, 128 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 29, 129 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 30, 130 \n\t" \ + " bne RegTest2Fail \n\t" \ + " cmpwi 31, 131 \n\t" \ + " bne RegTest2Fail \n\t" \ + " \n\t" \ + " mfspr 0, 256 #USPRG0 \n\t" \ + " cmpwi 0, 300 \n\t" \ + " bne RegTest2Fail \n\t" \ + " mfspr 0, 8 #LR \n\t" \ + " cmpwi 0, 500 \n\t" \ + " bne RegTest2Fail \n\t" \ + " mfspr 0, 1 #XER \n\t" \ + " cmpwi 0, 4 \n\t" \ + " bne RegTest2Fail \n\t" \ + " \n\t" \ + " bl prvRegTest2Pass \n\t" \ + " b RegTest2Start \n\t" \ + " \n\t" \ + "RegTest2Fail: \n\t" \ + " \n\t" \ + " \n\t" \ + " bl prvRegTestFail \n\t" \ + " b RegTest2Start \n\t" \ + ); +} +/*-----------------------------------------------------------*/ + +/* This hook function will get called if there is a suspected stack overflow. +An overflow can cause the task name to be corrupted, in which case the task +handle needs to be used to determine the offending task. */ +void vApplicationStackOverflowHook( xTaskHandle xTask, signed portCHAR *pcTaskName ); +void vApplicationStackOverflowHook( xTaskHandle xTask, signed portCHAR *pcTaskName ) +{
+/* To prevent the optimiser removing the variables. */
+volatile xTaskHandle xTaskIn = xTask;
+volatile signed portCHAR *pcTaskNameIn = pcTaskName;
+ + /* The following three calls are simply to stop compiler warnings about the + functions not being used - they are called from the inline assembly. */ + prvRegTest1Pass(); + prvRegTest2Pass(); + prvRegTestFail(); + + for( ;; ); +} + + + diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/partest/partest.c b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/partest/partest.c new file mode 100644 index 00000000..ac575c09 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/partest/partest.c @@ -0,0 +1,168 @@ +/*
+ FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+
+/* Scheduler includes. */
+#include "FreeRTOS.h"
+
+/* Demo application includes. */
+#include "partest.h"
+
+/* Library includes. */
+#include "xparameters.h"
+#include "xgpio_l.h"
+
+/* Misc hardware specific definitions. */
+#define partstALL_AS_OUTPUT 0x00
+#define partstCHANNEL_1 0x01
+#define partstMAX_4BIT_LED 0x03
+
+/* The outputs are split into two IO sections, these variables maintain the
+current value of either section. */
+static unsigned portBASE_TYPE uxCurrentOutput4Bit, uxCurrentOutput5Bit;
+
+/*-----------------------------------------------------------*/
+/*
+ * Setup the IO for the LED outputs.
+ */
+void vParTestInitialise( void )
+{
+ /* Set both sets of LED's on the demo board to outputs. */
+ XGpio_mSetDataDirection( XPAR_LEDS_4BIT_BASEADDR, partstCHANNEL_1, partstALL_AS_OUTPUT );
+ XGpio_mSetDataDirection( XPAR_LEDS_POSITIONS_BASEADDR, partstCHANNEL_1, partstALL_AS_OUTPUT );
+
+ /* Start with all outputs off. */
+ uxCurrentOutput4Bit = 0;
+ XGpio_mSetDataReg( XPAR_LEDS_4BIT_BASEADDR, partstCHANNEL_1, 0x00 );
+ uxCurrentOutput5Bit = 0;
+ XGpio_mSetDataReg( XPAR_LEDS_POSITIONS_BASEADDR, partstCHANNEL_1, 0x00 );
+}
+/*-----------------------------------------------------------*/
+
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
+{
+unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;
+
+ portENTER_CRITICAL();
+ {
+ /* Which IO section does the LED being set/cleared belong to? The
+ 4 bit or 5 bit outputs? */
+ if( uxLED <= partstMAX_4BIT_LED )
+ {
+ uxBaseAddress = XPAR_LEDS_4BIT_BASEADDR;
+ puxCurrentValue = &uxCurrentOutput5Bit;
+ }
+ else
+ {
+ uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;
+ puxCurrentValue = &uxCurrentOutput4Bit;
+ uxLED -= partstMAX_4BIT_LED;
+ }
+
+ /* Setup the bit mask accordingly. */
+ uxLED = 0x01 << uxLED;
+
+ /* Maintain the current output value. */
+ if( xValue )
+ {
+ *puxCurrentValue |= uxLED;
+ }
+ else
+ {
+ *puxCurrentValue &= ~uxLED;
+ }
+
+ /* Write the value to the port. */
+ XGpio_mSetDataReg( uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );
+ }
+ portEXIT_CRITICAL();
+}
+/*-----------------------------------------------------------*/
+
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
+{
+unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;
+
+ portENTER_CRITICAL();
+ {
+ /* Which IO section does the LED being toggled belong to? The
+ 4 bit or 5 bit outputs? */
+ if( uxLED <= partstMAX_4BIT_LED )
+ {
+
+ uxBaseAddress = XPAR_LEDS_4BIT_BASEADDR;
+ puxCurrentValue = &uxCurrentOutput5Bit;
+ }
+ else
+ {
+ uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;
+ puxCurrentValue = &uxCurrentOutput4Bit;
+ uxLED -= partstMAX_4BIT_LED;
+ }
+
+ /* Setup the bit mask accordingly. */
+ uxLED = 0x01 << uxLED;
+
+ /* Maintain the current output value. */
+ if( *puxCurrentValue & uxLED )
+ {
+ *puxCurrentValue &= ~uxLED;
+ }
+ else
+ {
+ *puxCurrentValue |= uxLED;
+ }
+
+ /* Write the value to the port. */
+ XGpio_mSetDataReg(uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );
+ }
+ portEXIT_CRITICAL();
+}
+
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/serial/serial.c b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/serial/serial.c new file mode 100644 index 00000000..3e547790 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/RTOSDemo/serial/serial.c @@ -0,0 +1,227 @@ +/*
+ FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+
+/*
+ BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART
+*/
+
+/* Scheduler includes. */
+#include "FreeRTOS.h"
+#include "queue.h"
+#include "task.h"
+
+/* Demo application includes. */
+#include "serial.h"
+
+/* Library includes. */
+#include "xparameters.h"
+#include "xuartlite.h"
+#include "xuartlite_l.h"
+
+/*-----------------------------------------------------------*/
+
+/* Queues used to hold received characters, and characters waiting to be
+transmitted. */
+static xQueueHandle xRxedChars;
+static xQueueHandle xCharsForTx;
+
+/* Structure that maintains information on the UART being used. */
+static XUartLite xUART;
+
+/*
+ * Sample UART interrupt handler. Note this is used to demonstrate the kernel
+ * features and test the port - it is not intended to represent an efficient
+ * implementation.
+ */
+static void vSerialISR( XUartLite *pxUART );
+
+/*-----------------------------------------------------------*/
+
+xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
+{
+ /* NOTE: The baud rate used by this driver is determined by the hardware
+ parameterization of the UART Lite peripheral, and the baud value passed to
+ this function has no effect. */
+ ( void ) ulWantedBaud;
+
+ /* Create the queues used to hold Rx and Tx characters. */
+ xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
+ xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
+
+ /* Only initialise the UART if the queues were created correctly. */
+ if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) )
+ {
+
+ XUartLite_Initialize( &xUART, XPAR_RS232_UART_DEVICE_ID );
+ XUartLite_ResetFifos( &xUART );
+ XUartLite_DisableInterrupt( &xUART );
+
+ if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS )
+ {
+ /* xPortInstallInterruptHandler() could fail if
+ vPortSetupInterruptController() has not been called prior to this
+ function. */
+ XUartLite_EnableInterrupt( &xUART );
+ }
+ }
+
+ /* There is only one port so the handle is not used. */
+ return ( xComPortHandle ) 0;
+}
+/*-----------------------------------------------------------*/
+
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
+{
+ /* The port handle is not required as this driver only supports one UART. */
+ ( void ) pxPort;
+
+ /* Get the next character from the buffer. Return false if no characters
+ are available, or arrive before xBlockTime expires. */
+ if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
+ {
+ return pdTRUE;
+ }
+ else
+ {
+ return pdFALSE;
+ }
+}
+/*-----------------------------------------------------------*/
+
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
+{
+portBASE_TYPE xReturn = pdTRUE;
+
+ portENTER_CRITICAL();
+ {
+ /* If the UART FIFO is full we can block posting the new data on the
+ Tx queue. */
+ if( XUartLite_mIsTransmitFull( XPAR_RS232_UART_BASEADDR ) )
+ {
+ if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
+ {
+ xReturn = pdFAIL;
+ }
+ }
+ /* Otherwise, if there is data already in the queue we should add the
+ new data to the back of the queue to ensure the sequencing is
+ maintained. */
+ else if( uxQueueMessagesWaiting( xCharsForTx ) )
+ {
+ if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
+ {
+ xReturn = pdFAIL;
+ }
+ }
+ /* If the UART FIFO is not full and there is no data already in the
+ queue we can write directly to the FIFO without disrupting the
+ sequence. */
+ else
+ {
+ XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cOutChar );
+ }
+ }
+ portEXIT_CRITICAL();
+
+ return xReturn;
+}
+/*-----------------------------------------------------------*/
+
+void vSerialClose( xComPortHandle xPort )
+{
+ /* Not supported as not required by the demo application. */
+ ( void ) xPort;
+}
+/*-----------------------------------------------------------*/
+
+static void vSerialISR( XUartLite *pxUART )
+{
+unsigned portLONG ulISRStatus;
+portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE, lDidSomething;
+portCHAR cChar;
+
+ do
+ {
+ lDidSomething = pdFALSE;
+
+ ulISRStatus = XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_STATUS_REG_OFFSET );
+
+ if( ( ulISRStatus & XUL_SR_RX_FIFO_VALID_DATA ) != 0 )
+ {
+ /* A character is available - place it in the queue of received
+ characters. This might wake a task that was blocked waiting for
+ data. */
+ cChar = ( portCHAR ) XIo_In32( XPAR_RS232_UART_BASEADDR + XUL_RX_FIFO_OFFSET );
+ xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken );
+ lDidSomething = pdTRUE;
+ }
+
+ if( ( ulISRStatus & XUL_SR_TX_FIFO_EMPTY ) != 0 )
+ {
+ /* There is space in the FIFO - if there are any characters queue for
+ transmission they can be sent to the UART now. This might unblock a
+ task that was waiting for space to become available on the Tx queue. */
+ if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
+ {
+ XIo_Out32( XPAR_RS232_UART_BASEADDR + XUL_TX_FIFO_OFFSET, cChar );
+ lDidSomething = pdTRUE;
+ }
+ }
+ } while( lDidSomething == pdTRUE );
+
+ /* If we woke any tasks we may require a context switch. */
+ if( xHigherPriorityTaskWoken )
+ {
+ portYIELD_FROM_ISR();
+ }
+}
+
+
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_BifShapes.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_BifShapes.xsl new file mode 100644 index 00000000..e3f4c3fb --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_BifShapes.xsl @@ -0,0 +1,211 @@ +<?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_BifTypes"> + + <xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR"> + + <xsl:call-template name="Define_BifType"> + <xsl:with-param name="iBusType" select="@BUSSTD"/> + </xsl:call-template> + + <xsl:call-template name="Define_BifBusConnectors"> + <xsl:with-param name="iBusType" select="@BUSSTD"/> + </xsl:call-template> + + </xsl:for-each> + +<!-- + <xsl:message>The color of bus <xsl:value-of select="@BUSSTD"/> is <xsl:value-of select="@RGB"/></xsl:message> + <xsl:message>The OPB Bus color is <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[@BUSSTD = 'OPB']/@RGB"/> </xsl:message> +--> +</xsl:template> + + +<xsl:template name="Define_BifType"> + + <xsl:param name="iBusType" select="'OPB'"/> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <symbol id="{$iBusType}_Bif"> + <rect x="0" + y="0" + rx="3" + ry="3" + width= "{$BIF_W}" + height="{$BIF_H}" + style="fill:{$busColor_}; stroke:black; stroke-width:1"/> + </symbol> + +</xsl:template> + +<xsl:template name="Define_BifBusConnectors"> + + <xsl:param name="iBusType" select="'OPB'"/> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="busColor_lt_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </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)"/> + + <symbol id="{$iBusType}_busconn_MASTER"> + <rect x="0" + y="0" + width= "{$BIFC_W}" + height="{$BIFC_H}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; stroke-width:1"/> + + <rect x="{$BIFC_dx + 0.5}" + y="{$BIFC_dy}" + width= "{$BIFC_Wi}" + height="{$BIFC_Hi}" + style="fill:{$busColor_}; stroke:none;"/> + </symbol> + + <symbol id="{$iBusType}_busconn_INITIATOR"> + <rect x="0" + y="0" + width= "{$BIFC_W}" + height="{$BIFC_H}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; stroke-width:1"/> + + <rect x="{$BIFC_dx + 0.5}" + y="{$BIFC_dy}" + width= "{$BIFC_Wi}" + height="{$BIFC_Hi}" + style="fill:{$busColor_}; stroke:none;"/> + </symbol> + + <symbol id="{$iBusType}_busconn_SLAVE"> + <circle + cx="{ceiling($BIFC_W div 2)}" + cy="{ceiling($BIFC_H div 2)}" + r="{ceiling($BIFC_W div 2)}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; 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:{$busColor_}; stroke:none;"/> + </symbol> + + <symbol id="{$iBusType}_busconn_TARGET"> + <circle + cx="{ceiling($BIFC_W div 2)}" + cy="{ceiling($BIFC_H div 2)}" + r="{ceiling($BIFC_W div 2)}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; 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:{$busColor_}; stroke:none;"/> + </symbol> + + + <symbol id="{$iBusType}_busconn_MASTER_SLAVE"> + <circle + cx="{ceiling($BIFC_W div 2)}" + cy="{ceiling($BIFC_H div 2)}" + r="{ceiling($BIFC_W div 2)}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; 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:{$busColor_}; stroke:none;"/> + + <rect x="0" + y="{ceiling($BIFC_H div 2)}" + width= "{$BIFC_W}" + height="{ceiling($BIFC_H div 2)}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; 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:{$busColor_}; stroke:none;"/> + + </symbol> + + <symbol id="{$iBusType}_busconn_MONITOR"> + + <rect x="0" + y="0.5" + width= "{$BIFC_W}" + height="{ceiling($BIFC_Hi div 2)}" + style="fill:{$busColor_}; stroke:none;"/> + + <rect x="0" + y="{ceiling($BIFC_H div 2) + 4}" + width= "{$BIFC_W}" + height="{ceiling($BIFC_Hi div 2)}" + style="fill:{$busColor_}; stroke:none;"/> + + </symbol> + + <symbol id="{$iBusType}_busconn_TRANSPARENT"> + + <circle + cx="{ceiling($BIFC_W div 2)}" + cy="{ceiling($BIFC_H div 2)}" + r="{ceiling($BIFC_W div 2)}" + style="fill:{$busColor_lt_}; stroke:{$busColor_}; 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:{$busColor_}; stroke:none;"/> + + </symbol> + + <symbol id="{$iBusType}_busconn_"> + + <circle + cx="{ceiling($BIFC_W div 2)}" + cy="{ceiling($BIFC_H div 2)}" + r="{ceiling($BIFC_W div 2)}" + style="fill:{$COL_WHITE}; stroke:{$busColor_}; 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;"/> + + </symbol> + + +</xsl:template> + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_Colors.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_Colors.xsl new file mode 100644 index 00000000..a4efce5f --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_Colors.xsl @@ -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_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_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_IORING" select="'#000088'"/> +<xsl:variable name="COL_IORING_LT" select="'#CCCCFF'"/> +<xsl:variable name="COL_SYSPRT" select="'#0000BB'"/> + + +<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="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="TRS" RGB="#009999" RGB_LT="#00CCCC"/> + <BUSCOLOR BUSSTD="TRANS" RGB="#009999" RGB_LT="#00CCCC"/> + <BUSCOLOR BUSSTD="TRANSPARENT" RGB="#009999" RGB_LT="#00CCCC"/> + + <BUSCOLOR BUSSTD="TARGET" RGB="#009999" RGB_LT="#00CCCC"/> + <BUSCOLOR BUSSTD="INITIATOR" RGB="#009999" RGB_LT="#00CCCC"/> + + <BUSCOLOR BUSSTD="KEY" RGB="#444444" RGB_LT="#888888"/> + +</xsl:variable> + +<xsl:template name="BusType2Color"> + <xsl:param name="iBusType" select="'OPB'"/> + + <xsl:choose> + <xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusType)]/@RGB"> + <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusType)]/@RGB"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'TRS')]/@RGB"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="BusType2LightColor"> + <xsl:param name="iBusType" select="'OPB'"/> + +<!-- + <xsl:message>The color of bus <xsl:value-of select="$busType"/> is <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $busType)]/@RGB"/> +--> + + <xsl:choose> + <xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusType)]/@RGB_LT"> + <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusType)]/@RGB_LT"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'TRS')]/@RGB_LT"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="intcIdx2Color"> + <xsl:param name="iIntcIdx" select="'0'"/> + + <xsl:variable name="idx_" select="$iIntcIdx mod 9"/> + + <xsl:choose> + <xsl:when test="$idx_ = '0'"><xsl:value-of select="$COL_INTR_0"/></xsl:when> + <xsl:when test="$idx_ = '1'"><xsl:value-of select="$COL_INTR_1"/></xsl:when> + <xsl:when test="$idx_ = '2'"><xsl:value-of select="$COL_INTR_2"/></xsl:when> + <xsl:when test="$idx_ = '3'"><xsl:value-of select="$COL_INTR_3"/></xsl:when> + <xsl:when test="$idx_ = '4'"><xsl:value-of select="$COL_INTR_4"/></xsl:when> + <xsl:when test="$idx_ = '5'"><xsl:value-of select="$COL_INTR_5"/></xsl:when> + <xsl:when test="$idx_ = '6'"><xsl:value-of select="$COL_INTR_6"/></xsl:when> + <xsl:when test="$idx_ = '7'"><xsl:value-of select="$COL_INTR_7"/></xsl:when> + <xsl:when test="$idx_ = '8'"><xsl:value-of select="$COL_INTR_8"/></xsl:when> + <xsl:when test="$idx_ = '9'"><xsl:value-of select="$COL_INTR_9"/></xsl:when> + <xsl:otherwise> + <xsl:value-of select="$COL_INTR_0"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_Diagrams.css b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_Diagrams.css new file mode 100644 index 00000000..bde7995d --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSVG_Diagrams.css @@ -0,0 +1,329 @@ + 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.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; + } + + 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; + } + + + 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.bciplabel { + fill: #000000; + stroke: none; + font-size: 6pt; + font-style: italic; + font-weight: bold; + text-anchor: middle; + font-family: Courier Arial Helvetica sans-serif; + } + + text.bciptype { + fill: #AA0017; + stroke: none; + font-size: 6pt; + font-style: italic; + font-weight: bold; + text-anchor: middle; + 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; + } + diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_BusLaneSpaces.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_BusLaneSpaces.xsl new file mode 100644 index 00000000..90ba612d --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_BusLaneSpaces.xsl @@ -0,0 +1,2774 @@ +<?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"/> + + +<!-- + =========================================================== + Handle Bucket connections to the shared busses. + =========================================================== +--> + +<xsl:template name="BCLaneSpace_BucketToSharedBus"> + + <xsl:param name="iBusStd" select="'NONE'"/> + <xsl:param name="iBusName" select="'NONE'"/> + <xsl:param name="iBifRank" 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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/> + <xsl:variable name="sbs_name_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $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="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="bktshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@SHAPE_VERTI_INDEX"/> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="_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="_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="_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_ > $stackToEast_AbvSbs_H_)"> + <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/> + </xsl:if> + + <xsl:if test="not($stackToWest_AbvSbs_H_ > $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="iBifRank" 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 diff <xsl:value-of select="$procStack_H_diff_"/></xsl:message> + <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message> + <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message> + <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message> +--> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/> + <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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIF_X"/> + <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIFRANK"/> + + <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@SHAPE_VERTI_INDEX"/> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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>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="_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="_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="_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_ > $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_ > $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: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_ - ceiling($BLKD_MOD_W div 2))"/> + <xsl:value-of select="($space_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> + + <!-- Place the bus connection --> + <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$iBusStd}_busconn_{$procBifRank_}"/> + + + <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_ > $vert_line_y2_"> + <xsl:value-of select="$vert_line_y2_"/> + </xsl:when> + <xsl:when test="$vert_line_y2_ > $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_ > $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_ > $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_ > $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_ > $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:message>Proc diff <xsl:value-of select="$procStack_H_diff_"/></xsl:message> + <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message> + <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message> + <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message> +--> + +</xsl:template> + + +<!-- + =========================================================== + Handle non Processor Sharedebus connections. + =========================================================== +--> + +<xsl:template name="BCLaneSpace_NonProcBifToSharedBus"> + + <xsl:param name="iBusStd" select="'NONE'"/> + <xsl:param name="iBusName" select="'NONE'"/> + <xsl:param name="iBifRank" 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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/> + <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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIF_X"/> + <xsl:variable name="cmplxBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIFRANK"/> + + <xsl:variable name="cmplxshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="cmplxshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@SHAPE_VERTI_INDEX"/> + + <xsl:variable name="is_abvSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_ABVSBS)"/> + <xsl:variable name="is_blwSbs_" select="(/EDKSYSTEM/BLKDSHAPES/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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="_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="_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="_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_ > $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_ > $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_{$cmplxBifRank_}"/> + +<!-- + <xsl:message>Bif Rank <xsl:value-of select="$cmplxBifRank_"/></xsl:message> +--> + <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="vert_line_y2_" select="($G_SharedBus_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_ > $vert_line_y2_"> + <xsl:value-of select="$vert_line_y2_"/> + </xsl:when> + <xsl:when test="$vert_line_y2_ > $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_ > $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_ > $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_ > $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_ > $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_ > $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_ > $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="iBifRank" 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>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="bcInSpace_X_" select="($laneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/> + +--> + + + <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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="mem_procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/> + + <xsl:variable name="mem_procshp_Y_"> + <xsl:call-template name="_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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="_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="_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_ > $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_ > $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="_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="_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_ > $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_ > $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="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/> + <xsl:variable name="procBifSide_" select="/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}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/> + + </xsl:when> + + <xsl:otherwise> + + <xsl:variable name="memcInstance_" select="@INSTANCE"/> + <xsl:variable name="memcshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@SHAPE_VERTI_INDEX"/> + <xsl:variable name="memcBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/> + <xsl:variable name="memcBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/> + + <xsl:variable name="memshp_Y_"> + <xsl:call-template name="_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="((/EDKSYSTEM/BLKDSHAPES/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="(/EDKSYSTEM/BLKDSHAPES/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="memcBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="memcBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/> + + <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$memcBifRank_}" 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="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)"/> + </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_"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + +<!-- + <xsl:message>bc_X_ <xsl:value-of select="@X"/></xsl:message> + <xsl:message>h_bus_ul_x <xsl:value-of select="$h_bus_ul_x_"/></xsl:message> + <xsl:message>h_bus_ul_y <xsl:value-of select="$h_bus_ul_y_"/></xsl:message> + <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message> +--> + + <!-- Place the bus connection --> + <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/> + + <!-- 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="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> + + + <!-- 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_}"/> +<!-- +--> + <!-- 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 generic Point to Point connections + =========================================================== +--> + +<xsl:template name="BCLaneSpace_PointToPoint"> + + <xsl:param name="iBusStd" select="'NONE'"/> + <xsl:param name="iBusName" select="'NONE'"/> + <xsl:param name="iBifRank" 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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="busColor_lt_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + +<!-- + <xsl:variable name="p2pshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="p2pshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/> +--> + + <xsl:variable name="p2pshp_Y_"> + <xsl:call-template name="_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="_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="_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_ > $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_ > $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="_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="_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_ > $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_ > $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="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/> + <xsl:variable name="procBifSide_" select="/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}" BIFRANK="{$procBifRank_}" 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}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" STACK_ID=""/> +--> + </xsl:when> + + <xsl:otherwise> + + <xsl:variable name="modInstance_" select="@INSTANCE"/> + <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/> + <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/> + <xsl:variable name="modBif_Y_" select="/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="_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="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="modBusName_" select="/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}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/> +--> + <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" 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> + + <!-- 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>BIFRANK <xsl:value-of select="@BIFRANK"/></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_{@BIFRANK}"/> + + <!-- Draw the arrow --> + <xsl:choose> + <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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="iBifRank" 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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="_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="_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="_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_ > $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_ > $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="_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="_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_ > $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_ > $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="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/> + <xsl:variable name="procBifSide_" select="/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: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}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/> + </xsl:when> + + <xsl:otherwise> + + <xsl:variable name="modType_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/@MODCLASS"/> + <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/> + <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/> + <xsl:variable name="modBusStd_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/> + <xsl:variable name="memcMOD_W_" select="((/EDKSYSTEM/BLKDSHAPES/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="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="modBusName_" select="/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}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/> +<!-- + <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" 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: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)"/> + </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>BIFRANK <xsl:value-of select="@BIFRANK"/></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_"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + + <!-- 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 arrow --> + <xsl:choose> + <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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_{@BIFRANK}"/> + + + </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="topRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busTop_)]/@BIFRANK)"/> + <xsl:variable name="botRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busBot_)]/@BIFRANK)"/> +--> + + <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_}"/> + + <!-- 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:message>Bot Rank <xsl:value-of select="$botRnk_"/></xsl:message> +--> + +<!-- + <xsl:call-template name="Draw_P2PBus"> + <xsl:with-param name="busX" select="$bcInSpace_X_"/> + <xsl:with-param name="busTop" select="$busTop_"/> + <xsl:with-param name="busBot" select="$busBot_"/> + <xsl:with-param name="topRnk" select="$topRnk_"/> + <xsl:with-param name="botRnk" select="$botRnk_"/> + <xsl:with-param name="busStd" select="$busStd"/> + <xsl:with-param name="busName" select="$busName"/> + </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="iBifRank" 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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/> + <xsl:variable name="procshp_Y_"> + <xsl:call-template name="_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="_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="_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_ > $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_ > $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="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="procBifSide_" select="/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}" BIFRANK="{$procBifRank_}" 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="_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="_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="_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="_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_{@BIFRANK}"/> + </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="leftRnk_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcLeft_)]/@BIFRANK)"/> + <xsl:variable name="rghtRnk_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcRght_)]/@BIFRANK)"/> + + <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="iLeftRnk" select="$leftRnk_"/> + <xsl:with-param name="iRghtRnk" select="$rghtRnk_"/> + <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="iBifRank" 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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="busColor_lt_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="p2pshp_Y_"> + <xsl:call-template name="_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="_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="_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_ > $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_ > $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="_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="_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_ > $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_ > $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="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/> + <xsl:variable name="procBifSide_" select="/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}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/> + + </xsl:when> + + <xsl:otherwise> + + <xsl:variable name="modInstance_" select="@INSTANCE"/> + <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/> + <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/> + <xsl:variable name="modBif_Y_" select="/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="_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="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="modBusName_" select="/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}" BIFRANK="{$modBifRank_}" 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"/> + +<!-- + <xsl:message>BUS TOP <xsl:value-of select="$busTop_"/></xsl:message> + <xsl:message>BUS BOT <xsl:value-of select="$busBot_"/></xsl:message> +--> + + <!-- Draw the vertical part of the bus --> +<!-- + <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" + y="0" + width= "{$BLKD_P2P_BUS_W}" + height="{200 + $BLKD_P2P_BUS_W}" + style="stroke:none;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> +--> + + <!-- 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>BIFRANK <xsl:value-of select="@BIFRANK"/></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_{@BIFRANK}"/> + + <!-- Draw the arrow --> + <xsl:choose> + <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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 ((@BIFRANK = 'INITIATOR') or (@BIFRANK = '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_}"/> + +<!-- + <text class="p2pbuslabel" + x="{$v_bus_ul_x_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4)}" + y="{($BLKD_BUS_ARROW_H * 3)}"><xsl:value-of select="$busName_"/></text> +--> + + </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="iBifRank" 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="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="space_W_"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@STACK_HORIZ_INDEX"/> + </xsl:when> + + <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@SHAPE_VERTI_INDEX"/> + </xsl:when> + + <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]"> + <xsl:value-of select="$BLKD_MOD_W"/> + </xsl:when> + + <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W"> +<!-- + <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message> +--> + <xsl:value-of select="(/EDKSYSTEM/BLKDSHAPES/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="_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="_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="_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="(($shp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $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_ > $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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/> + <xsl:variable name="splitBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> + <xsl:variable name="splitBifSide_" select="/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> +<!-- + <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/> +--> +<!-- + <xsl:message>VERTI INDEX <xsl:value-of select="$shp_vert_idx_"/></xsl:message> + <xsl:message>BIF Y <xsl:value-of select="$splitBif_Y_"/></xsl:message> + <xsl:message>HORIZ INDEX <xsl:value-of select="$shp_hori_idx_"/></xsl:message> +--> + + <use x="{$bcInSpace_X_}" y="{$bcSplit_Y_}" xlink:href="#{@BUSSTD}_busconn_{$splitBifRank_}"/> + + + <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="iBc_Rnk" select="$splitBifRank_"/> + <xsl:with-param name="iBc_Side" select="$splitBifSide_"/> + <xsl:with-param name="iBusStd" select="$iBusStd"/> + <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:message>Stack to West <xsl:value-of select="$stackToWest_"/></xsl:message> + <xsl:message>Stack to East <xsl:value-of select="$stackToEast_"/></xsl:message> + <xsl:message>Stack abv diff <xsl:value-of select="$stack_H_diff_"/></xsl:message> +--> + + <xsl:variable name="spaceAbvSbs_H_"> + <xsl:call-template name="_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="_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="_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="_gen_Space_Name"> + <xsl:with-param name="iStackToEast" select="$stackToEast_"/> + <xsl:with-param name="iStackToWest" select="$stackToWest_"/> + </xsl:call-template> + </xsl:variable> + +<!-- + <xsl:message>Stack Width <xsl:value-of select="$space_W_"/></xsl:message> + <xsl:message>Space Name <xsl:value-of select="$space_name_"/></xsl:message> + <xsl:message>Stack Abv <xsl:value-of select="$spaceAbvSbs_H_"/></xsl:message> + <xsl:message>Stack Blw <xsl:value-of select="$spaceBlwSbs_H_"/></xsl:message> + <xsl:message>Total Sbs <xsl:value-of select="$totalSbs_H_"/></xsl:message> +--> + + <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="_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="_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="_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)"/> + +<!-- + <xsl:message>Stack To West <xsl:value-of select="$stackToWest_W_"/></xsl:message> + <xsl:message>Stack To East <xsl:value-of select="$stackToEast_W_"/></xsl:message> +--> + + <symbol id="{$space_name_}"> + +<!-- + <rect x="0" + y="0" + width= "100" + height="200" + style="stroke:none; fill:{$COL_WHITE}"/> +--> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/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="laneInSpace_X_" select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/> + <xsl:message>Oriented <xsl:value-of select="@ORIENTED"/></xsl:message> + <xsl:message>laneInSpace_XY <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:message> + <xsl:message>Lane in space X <xsl:value-of select="$laneInSpace_X_"/></xsl:message> +--> + + <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_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="BusType2Color"> + <xsl:with-param name="iBusType" 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[@BIFRANK] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX"> + <xsl:call-template name="BCLaneSpace_BucketToSharedBus"> + <xsl:with-param name="iBusName" select="$busName_"/> + <xsl:with-param name="iBusStd" select="$busStd_"/> + <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/> + <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 /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX"> + <xsl:call-template name="BCLaneSpace_ProcBifToSharedBus"> + <xsl:with-param name="iBusStd" select="$busStd_"/> + <xsl:with-param name="iBusName" select="$busName_"/> + <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/> + <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_)]/@BUSINDEX"> + <xsl:call-template name="BCLaneSpace_NonProcBifToSharedBus"> + <xsl:with-param name="iBusStd" select="$busStd_"/> + <xsl:with-param name="iBusName" select="$busName_"/> + <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/> + <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="iBifRank" select="BUSCONN/@BIFRANK"/> + <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="iBifRank" select="BUSCONN/@BIFRANK"/> + <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="iBifRank" select="BUSCONN/@BIFRANK"/> + <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="iBifRank" select="BUSCONN/@BIFRANK"/> + <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="iBifRank" select="BUSCONN/@BIFRANK"/> + <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="iBifRank" select="BUSCONN/@BIFRANK"/> + <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> + + </symbol> + +</xsl:template> + +<xsl:template name="Define_BusLaneSpaces"> + + <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Busses.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Busses.xsl new file mode 100644 index 00000000..41a472e2 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Busses.xsl @@ -0,0 +1,495 @@ +<?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="iBusType" select="@BUSSTD"/> + </xsl:call-template> + + <xsl:call-template name="Define_BusArrowsNorthSouth"> + <xsl:with-param name="iBusType" select="@BUSSTD"/> + </xsl:call-template> + + <xsl:call-template name="Define_SplitBusses"> + <xsl:with-param name="iBusType" select="@BUSSTD"/> + </xsl:call-template> + + </xsl:for-each> + + <xsl:call-template name="Define_SharedBus"> + <xsl:with-param name="iBusType" select="'PLB'"/> + </xsl:call-template> + + <xsl:call-template name="Define_SharedBus"> + <xsl:with-param name="iBusType" select="'PLBV46'"/> + </xsl:call-template> + + <xsl:call-template name="Define_SharedBus"> + <xsl:with-param name="iBusType" select="'OPB'"/> + </xsl:call-template> + + <xsl:call-template name="Define_SharedBus_Group"/> + +</xsl:template> + +<xsl:template name="Define_BusArrowsEastWest"> + <xsl:param name="iBusType" select="'OPB'"/> + + <xsl:variable name="bus_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="bus_col_lt_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <symbol id="{$iBusType}_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:{$bus_col_}"/> + </symbol> + + <symbol id="{$iBusType}_BusArrowWest"> + <use x="0" y="0" xlink:href="#{$iBusType}_BusArrowEast" transform="scale(-1,1) translate({$BLKD_BUS_ARROW_W * -1},0)"/> + </symbol> + + <symbol id="{$iBusType}_BusArrowHInitiator"> + <rect x="0" + y="{$BLKD_BUS_ARROW_G}" + width= "{$BLKD_BUS_ARROW_W}" + height="{$BLKD_P2P_BUS_W}" + style="stroke:none; fill:{$bus_col_}"/> + </symbol> + +</xsl:template> + +<!-- + <xsl:param name="bus_col" select="'OPB'"/> +--> + +<xsl:template name="Define_BusArrowsNorthSouth"> + <xsl:param name="iBusType" select="'OPB'"/> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="busColor_lt_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <symbol id="{$iBusType}_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:{$busColor_}"/> + </symbol> + + <symbol id="{$iBusType}_BusArrowNorth"> + <use x="0" y="0" xlink:href="#{$iBusType}_BusArrowSouth" transform="scale(1,-1) translate(0,{$BLKD_BUS_ARROW_H * -1})"/> + </symbol> + + <symbol id="{$iBusType}_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:{$busColor_}"/> + </symbol> + +</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="iBotRnk" select="'_unk_'"/> + <xsl:param name="iTopRnk" select="'_unk_'"/> + <xsl:param name="iBusStd" select="'_bstd_'"/> + <xsl:param name="iBusName" select="'_p2pbus_'"/> + + <xsl:variable name="busColor_"> + <xsl:choose> + + <xsl:when test="@BUSSTD"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="@BUSSTD"/> + </xsl:call-template> + </xsl:when> + + <xsl:when test="not($iBusStd = '_bstd_')"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:when> + + <xsl:otherwise> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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="((($iBotRnk = 'INITIATOR') or ($iBotRnk = '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="((($iTopRnk = 'INITIATOR') or ($iTopRnk = '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="{($busX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}" + y="{$busBot - $BLKD_BUS_ARROW_H}" + xlink:href="#{@BUSSTD}_{$botArrow_}"/> + </xsl:if> + + <xsl:if test="(not(@BUSSTD) and not($busStd = '_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:{$busColor_}"/> + + <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:if test="/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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iBusName)]/@GROUP"/> + </text> + + </xsl:if> + +</xsl:template> + + +<xsl:template name="Draw_Proc2ProcBus"> + + <xsl:param name="iBc_Y" select="0"/> + <xsl:param name="iBcLeft_X" select="0"/> + <xsl:param name="iBcRght_X" select="0"/> + <xsl:param name="iLeftRnk" select="'_unk_'"/> + <xsl:param name="iRghtRnk" select="'_unk_'"/> + <xsl:param name="iBusStd" select="'_bstd_'"/> + <xsl:param name="iBusName" select="'_p2pbus_'"/> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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="((($iLeftRnk = 'INITIATOR') or ($iLeftRnk = '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="((($iRghtRnk = 'INITIATOR') or ($iRghtRnk = '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:{$busColor_}"/> + + <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:template> + + +<xsl:template name="Draw_SplitConnBus"> + + <xsl:param name="iBc_X" select="0"/> + <xsl:param name="iBc_Y" select="0"/> + <xsl:param name="iBc_Rnk" select="'_unk_'"/> + <xsl:param name="iBc_Side" select="'_unk_'"/> + + <xsl:param name="iBusStd" select="'_bstd_'"/> + <xsl:param name="iBusName" select="'_p2pbus_'"/> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusStd"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="connArrow_"> + <xsl:choose> + <xsl:when test="((($iBc_Rnk = 'INITIATOR') or ($iBc_Rnk = '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:message>The bus name is <xsl:value-of select="$busName"/></xsl:message> + <xsl:message>The bif side is <xsl:value-of select="$bc_Side"/></xsl:message> + <xsl:message>The bif rank is <xsl:value-of select="$bc_Rnk"/></xsl:message> +--> + <xsl:choose> + <xsl:when test="(($iBusStd = 'FSL') and (($iBc_Rnk = 'MASTER') or ($iBc_Rnk = '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_Rnk = 'MASTER') or ($iBc_Rnk = '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_Rnk = 'SLAVE') or ($iBc_Rnk = 'TARGET') or ($iBc_Rnk = 'TRANSPARENT')))"> + <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:template> + + +<xsl:template name="Define_SharedBus"> + + <xsl:param name="iBusType" select="'OPB'"/> + + <xsl:variable name="sharedbus_w_" select="($G_total_drawarea_W - ($BLKD_INNER_GAP * 2))"/> + + <xsl:variable name="bus_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="bus_col_lt_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <symbol id="{$iBusType}_SharedBus"> + <use x="0" y="0" xlink:href="#{$iBusType}_BusArrowWest"/> + <use x="{$sharedbus_w_ - $BLKD_BUS_ARROW_W}" y="0" xlink:href="#{$iBusType}_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:{$bus_col_}"/> + </symbol> +</xsl:template> + + +<xsl:template name="Define_SplitBusses"> + + <xsl:param name="iBusType" sselect="'FSL'"/> + + <xsl:variable name="busColor_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$iBusType"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="bifc_r_" select="ceiling($BLKD_BIFC_W div 3)"/> + + <symbol id="{$iBusType}_SplitBus_EAST"> + <use x="0" y="0" xlink:href="#{$iBusType}_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:{$busColor_}"/> + + </symbol> + + <xsl:variable name="splbus_w_" select="($BLKD_BUS_ARROW_W + $BLKD_BIFC_W + $BLKD_BIFC_Wi)"/> + + <symbol id="{$iBusType}_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#{$iBusType}_SplitBus_EAST" transform="scale(-1,1) translate({$splbus_w_ * -1},0)"/> + </symbol> + + <symbol id="{$iBusType}_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:{$busColor_}"/> + + <rect x="{($BLKD_BUS_ARROW_W * 2)}" + y="0" + width= "{$BLKD_BUS_ARROW_H}" + height="{$BLKD_BUS_ARROW_H}" style="stroke:none; fill:{$busColor_}"/> + + </symbol> + + +</xsl:template> + + +<xsl:template name="Define_SharedBus_Group"> + +<!-- The Bridges go into the shared bus shape --> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE"> + + <xsl:variable name="modInst_" select="@INSTANCE"/> + <xsl:variable name="modType_" select="/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> + + <symbol id="group_sharedBusses"> + + <!-- Draw the shared bus shapes first --> + <xsl:for-each select="BLKDSHAPES/SBSSHAPES/MODULE"> + <xsl:variable name="instance_" select="@INSTANCE"/> + + <xsl:variable name="busStd_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUSSTD"/> + <xsl:variable name="busIndex_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUSINDEX"/> + + <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:for-each> +</symbol> + + <symbol 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="BusType2Color"> + <xsl:with-param name="iBusType" 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_}"/> +</symbol> + +</xsl:template> + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Calculations.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Calculations.xsl new file mode 100644 index 00000000..fcff0906 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Calculations.xsl @@ -0,0 +1,1080 @@ +<?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="_calc_Proc_Height"> + <xsl:param name="iProcInst" select="_processor_"/> + + <xsl:variable name="tot_bifs_h_"> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H)">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H"> + <xsl:variable name="bifs_h_" select="(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H)"/> + <xsl:value-of select="(($BLKD_BIF_H + $BLKD_BIF_GAP) * $bifs_h_)"/> + </xsl:if> + </xsl:variable> + + <xsl:value-of select="(($BLKD_MOD_LANE_H * 2) + $tot_bifs_h_ + ($BLKD_MOD_LABEL_H + $BLKD_BIF_GAP))"/> +</xsl:template> + +<xsl:template name="_calc_Max_Proc_Height"> + + <!-- Store the heights in a variable --> + <xsl:variable name="proc_heights_"> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE)"> + <PROC HEIGHT="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE"> + <xsl:variable name="procInst_" select="@INSTANCE"/> + <xsl:variable name="proc_height_"> + <xsl:call-template name="_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="_calc_Proc_MemoryUnits_Height"> + <xsl:param name="iProcInst" select="_processor_"/> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS = 'MEMORY_UNIT'))])">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS='MEMORY_UNIT'))]"> +<!-- + <xsl:variable name="unitId_" select="@PSTACK_MODS_Y"/> +--> + <xsl:variable name="unitHeight_"> + <xsl:call-template name="_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="_calc_Proc_Peripherals_Height"> + <xsl:param name="iProcInst" select="_processor_"/> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS = 'MEMORY_UNIT'))])">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="_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="_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="_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="_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="_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="_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="_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="_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="_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="_calc_Stack_AbvSbs_Height"> + <xsl:param name="iStackIdx" select="100"/> +<!-- + <xsl:message>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</xsl:message> +--> + + <xsl:if test="(not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]) and + not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]))"><xsl:value-of select="$BLKD_PROC2SBS_GAP"/></xsl:if> + + <xsl:if test="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]) or + (/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="_calc_Shape_Height"> + <xsl:with-param name="shapeId" select="@SHAPE_ID"/> + </xsl:call-template> +--> + + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS = 'MEMORY_UNIT') and (@IS_ABVSBS))]"> + + <xsl:variable name="memu_height_"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]"> + + <xsl:variable name="proc_height_"> + <xsl:call-template name="_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="_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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_BLWSBS))])"> + <STACKSHAPE HEIGHT="0"/> + </xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="_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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS = 'MEMORY_UNIT') and (@IS_BLWSBS))]"> + + <xsl:variable name="memu_height_"> + <xsl:call-template name="_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="_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="_calc_Stack_SbsBuckets_Height"> + <xsl:param name="iStackIdx" select="1000"/> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)])">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]"> + + <!-- Store the all buckets heights in a variable --> + <xsl:variable name="bkt_heights_"> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]"> + + <xsl:variable name="bkt_height_"> + <xsl:call-template name="_calc_SbsBucket_Height"> + <xsl:with-param name="iBucketId" select="@BUSINDEX"/> + </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="_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="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@EAST < /EDKSYSTEM/BLKDSHAPES/@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="_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="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@WEST = (/EDKSYSTEM/BLKDSHAPES/@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="_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="_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="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@EAST < /EDKSYSTEM/BLKDSHAPES/@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="_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="_calc_Max_Proc_PerisAbvSbs_Height"> + <xsl:param name="iProcInst" select="_processor_"/> + + <!-- Store the heights in a variable --> + <xsl:variable name="abvSbs_heights_"> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE)"> + <ABV HEIGHT="0"/> + </xsl:if> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE"> + <xsl:variable name="procInst_" select="@INSTANCE"/> +<!-- + <xsl:message>Found Blw Sbs height as <xsl:value-of select="$blwSbs_"/></xsl:message> + <ABV HEIGHT="{$pAbvSbs_}"/> +--> + + <xsl:variable name="pAbvSbs_"> + <xsl:call-template name="_calc_Proc_PerisAbvSbs_Height"> + <xsl:with-param name="iProcInst" select="$iProcInst_"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="memUs_"> + <xsl:call-template name="_calc_Proc_MemoryUnits_Height"> + <xsl:with-param name="iProcInst" select="$iProcInst_"/> + </xsl:call-template> + </xsl:variable> + +<!-- + <xsl:message>Found Peris Above height as <xsl:value-of select="$pAbvSbs_"/></xsl:message> + <xsl:message>Found MemUs Above height as <xsl:value-of select="$memUs_"/></xsl:message> + <xsl:message>Found PAbv Above height as <xsl:value-of select="($pAbvSbs_ + $memUs_)"/></xsl:message> +--> + <ABV HEIGHT="{$pAbvSbs_ + $memUs_}"/> + </xsl:for-each> + </xsl:variable> + +<!-- + <xsl:message>Found Abv Sbs max as <xsl:value-of select="math:max(exsl:node-set($abvSbs_heights_)/ABV/@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="_calc_MultiProc_Stack_Height"> + <xsl:param name="iMPStack_Blkd_X" select="100"/> + + <xsl:variable name="mpStk_ShpHeights_"> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@HAS_MULTIPROCCONNS) and (@PSTACK_BLKD_X = $iMPStack_Blkd_X))])"> + <MPSHAPE HEIGHT="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/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="_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="_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="_calc_Max_MultiProc_Stack_Height"> + + <!-- Store the heights in a variable --> + + <xsl:variable name="mpStks_Heights_"> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE)"> + <MPSTK HEIGHT="0"/> + </xsl:if> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@PSTACK_BLKD_X)]"> + <xsl:variable name="mpstack_height_"> + <xsl:call-template name="_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="_calc_Stack_Shape_Y"> + + <xsl:param name="iHorizIdx" select="100"/> + <xsl:param name="iVertiIdx" select="100"/> + + +<!-- + <xsl:message>Y at H index <xsl:value-of select="$iHorizIdx"/></xsl:message> + <xsl:message>Y at V index <xsl:value-of select="$iVertiIdx"/></xsl:message> + <xsl:param name="sbsGap" select="0"/> + <xsl:variable name="numSBSs_" select="count(/EDKSYSTEM/BLKDSHAPES/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(/EDKSYSTEM/BLKDSHAPES/SBSSHAPES/MODULE) * $BLKD_SBS_LANE_H) + $BLKD_PROC2SBS_GAP)"/> + + <xsl:if test="(not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]) and + not(/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[( (@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]) and + not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[( (@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]))">0</xsl:if> + + + <xsl:if test="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]) or + (/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[( (@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]) or + (/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[( (@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]))"> + <!-- Store the spaces above this one in a variable --> + <xsl:variable name="spaces_above_"> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX < $iVertiIdx))])"> + <SPACE HEIGHT="0"/> + </xsl:if> + + <!-- Store the height of all peripherals and memory units above this one--> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX < $iVertiIdx))]"> + + <xsl:if test="not(@MODCLASS='MEMORY_UNIT')"> + <xsl:variable name="peri_height_"> + <xsl:call-template name="_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="_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="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX < $iVertiIdx))]"> + <xsl:variable name="proc_height_"> + <xsl:call-template name="_calc_PeriShape_Height"> + <xsl:with-param name="iShapeInst" select="@INSTANCE"/> + </xsl:call-template> + </xsl:variable> + + <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="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]/@IS_BLWSBS)"> + <SPACE HEIGHT="{$sbsGap_}"/> + </xsl:if> + <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX < $iVertiIdx))]"> + <xsl:variable name="bkt_height_"> + <xsl:call-template name="_calc_SbsBucket_Height"> + <xsl:with-param name="iBucketId" select="@BUSINDEX"/> + </xsl:call-template> + </xsl:variable> + + <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="_calc_Max_BusConnLane_BifY"> + + <xsl:param name="iBusName" select="'_busname_'"/> + + <!-- Store the heights in a variable --> + <xsl:variable name="busConnYs_"> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE/BUSCONN)"> + <BUSCONNY HEIGHT="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE[(@BUSNAME = $iBusName)]/BUSCONN"> + + <xsl:variable name="peri_cstk_y_"> + <xsl:call-template name="_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_BIF_GAP) * @BIF_Y)"/> + </xsl:variable> + + <xsl:variable name="peri_bc_y_"> + <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_BIF_GAP + $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="_calc_Min_BusConnLane_BifY"> + + <xsl:param name="iBusName" select="'_busname_'"/> + + <!-- Store the heights in a variable --> + <xsl:variable name="busConnYs_"> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE/BUSCONN)"> + <BUSCONNY HEIGHT="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE[(@BUSNAME = $iBusName)]/BUSCONN"> + + <xsl:variable name="peri_cstk_y_"> + <xsl:call-template name="_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_BIF_GAP) * @BIF_Y)"/> + </xsl:variable> + + <xsl:variable name="peri_bc_y_"> + <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_BIF_GAP + $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="_calc_Stack_Height"> + <xsl:param name="iStackIdx" select="100"/> + + <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="_calc_Stack_Shape_Y"> + <xsl:with-param name="iHorizIdx" select="$iStackIdx"/> + </xsl:call-template> + </xsl:variable> + + <xsl:value-of select="$stack_height_"/> +</xsl:template> + +<!-- +--> + + +<xsl:template name="_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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[@STACK_HORIZ_INDEX = $iStackIdx])"> + <SHAPE WIDTH="0"/> + </xsl:if> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[@STACK_HORIZ_INDEX = $iStackIdx])"> + <SHAPE WIDTH="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="_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="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES[(@STACK_HORIZ_INDEX < $iStackIdx)])"> + <STACKSPACE WIDTH="0"/> + </xsl:if> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES[(@STACK_HORIZ_INDEX < $iStackIdx)])"> + <STACKSPACE WIDTH="0"/> + </xsl:if> + + <xsl:if test="not(/EDKSYSTEM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX < $iStackIdx)])"> + <STACKSPACE WIDTH="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@EAST <= $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="stack_width_"> + <xsl:if test="not(@EAST = $iStackIdx)"> + <xsl:call-template name="_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="/EDKSYSTEM/BLKDSHAPES/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="_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="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (not($iStackToWest = 'NONE') and (@WEST = $iStackToWest)))]"> + <xsl:value-of select="((/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (not($iStackToWest = 'NONE') and (@WEST = $iStackToWest)))]/@BUSLANES_W) * $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="_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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES[(@STACK_HORIZ_INDEX < $iStackToEast)])"> + <STACKSPACE WIDTH="0"/> + </xsl:if> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES[(@STACK_HORIZ_INDEX < $iStackToEast)])"> + <STACKSPACE WIDTH="0"/> + </xsl:if> + + <xsl:if test="not(/EDKSYSTEM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX < $iStackToEast)])"> + <STACKSPACE WIDTH="0"/> + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST < $iStackToEast) or (not($iStackToWest = 'NONE') and (@EAST <= $iStackToWest)))]"> + +<!-- + <xsl:message>==============================</xsl:message> + <xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message> +--> + + <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="_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="_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="_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="_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/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl new file mode 100644 index 00000000..bf9bf948 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl @@ -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/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_IOPorts.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_IOPorts.xsl new file mode 100644 index 00000000..9a53158c --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_IOPorts.xsl @@ -0,0 +1,498 @@ +<?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:param name="BLKD_IOP_H" select="16"/> +<xsl:param name="BLKD_IOP_W" select="16"/> +<xsl:param name="BLKD_IOP_SPC" select="12"/> +<xsl:param name="MOD_IO_GAP" select="8"/> +--> + + +<!-- ======================= DEF BLOCK =============================== --> +<xsl:template name="Define_IOPorts"> + + <xsl:variable name="key_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="'KEY'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="key_lt_col_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="'KEY'"/> + </xsl:call-template> + </xsl:variable> + + <symbol 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}"/> + </symbol> + + <symbol 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}"/> + + </symbol> + + <symbol 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_}"/> + </symbol> + + <symbol 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_}"/> + </symbol> + + <symbol 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;"/> + </symbol> + + <symbol 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;"/> + </symbol> + + <symbol 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;"/> + </symbol> + + +</xsl:template> + +<!-- ======================= DRAW BLOCK =============================== --> + +<xsl:template name="Draw_IOPorts"> + + <xsl:variable name="ports_count_" select="count(EXTERNALPORTS/PORT)"/> + + <xsl:if test="($ports_count_ > 30)"> + <xsl:call-template name="Draw_IOPorts_4Sides"/> + </xsl:if> + + <xsl:if test="($ports_count_ <= 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(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_ >= ($ports_per_side_ * 0) and ($pcount_ < ($ports_per_side_ * 1)))">W</xsl:when> + <xsl:when test="($pcount_ >= ($ports_per_side_ * 1) and ($pcount_ < ($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(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="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_ >= ($ports_per_side_ * 0) and ($pcount_ < ($ports_per_side_ * 1)))">W</xsl:when> + <xsl:when test="($pcount_ >= ($ports_per_side_ * 1) and ($pcount_ < ($ports_per_side_ * 2)))">S</xsl:when> + <xsl:when test="($pcount_ >= ($ports_per_side_ * 2) and ($pcount_ < ($ports_per_side_ * 3)))">E</xsl:when> + <xsl:when test="($pcount_ >= ($ports_per_side_ * 3) and ($pcount_ < ($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(/EDKSYSTEM/EXTERNALPORTS/PORT/@NAME))"/> + <xsl:variable name="max_sgnm_" select="math:max(string-length(/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(/EDKSYSTEM/EXTERNALPORTS/PORT)"> + <EXTPORT NAME="__none__" SIGNAME="__none_" NAMELEN="0" SIGLEN="0"/> + </xsl:if> + <xsl:if test="/EDKSYSTEM/EXTERNALPORTS/PORT"> + <xsl:for-each select="/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> +--> + + <symbol id="BlkDiagram_ExtPortsTable"> + <rect + x="0" + y="0" + width= "{$w_table_}" + height="{$h_font_}" style="fill:{$COL_RED}; stroke:none; stroke-width:1"/> + </symbol> + + + +</xsl:template> + +<!-- ======================= END MAIN BLOCK =========================== --> + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Main.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Main.xsl new file mode 100644 index 00000000..55c9b85f --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Main.xsl @@ -0,0 +1,1391 @@ +<?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"> + +<xsl:include href="MdtSVG_Colors.xsl"/> +<xsl:include href="MdtSVG_BifShapes.xsl"/> + +<xsl:include href="MdtSvgBLKD_Busses.xsl"/> +<xsl:include href="MdtSvgBLKD_IOPorts.xsl"/> +<xsl:include href="MdtSvgBLKD_Dimensions.xsl"/> +<xsl:include href="MdtSvgBLKD_Processors.xsl"/> +<xsl:include href="MdtSvgBLKD_Peripherals.xsl"/> +<xsl:include href="MdtSvgBLKD_Calculations.xsl"/> +<xsl:include href="MdtSvgBLKD_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"/> + +<xsl:param name="ADD_VIEWBOX" select="'FALSE'"/> +<xsl:param name="IN_TESTMODE" select="'FALSE'"/> + +<xsl:param name="CSS_SVG_DIAGRAMS" select="'MdtSVG_Diagrams.css'"/> + +<!-- + =========================================================================== + CALCULATE GLOBAL DIMENSIONS BASED ON BLKDSHAPES DEF IN INPUT XML + =========================================================================== +--> + +<xsl:variable name="G_total_StandAloneMpmc_H"> + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE"> + <xsl:value-of select="($BLKD_MPMC_MOD_H + $BLKD_MPMC2PROC_GAP)"/> + </xsl:if> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE)">0</xsl:if> +</xsl:variable> + +<xsl:variable name="G_max_Stack_BlwSbs_H"> + <xsl:call-template name="_calc_Max_Stack_BlwSbs_Height"/> +</xsl:variable> + +<xsl:variable name="G_max_Stack_AbvSbs_H"> + <xsl:call-template name="_calc_Max_Stack_AbvSbs_Height"/> +</xsl:variable> + +<xsl:variable name="G_total_Stacks_W"> + <xsl:call-template name="_calc_Stack_X"> + <xsl:with-param name="iStackIdx" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH)"/> + </xsl:call-template> +</xsl:variable> + +<xsl:variable name="G_NumOfSharedBusses" select="count(/EDKSYSTEM/BLKDSHAPES/SBSSHAPES/MODULE)"/> +<xsl:variable name="G_total_SharedBus_H" select="($G_NumOfSharedBusses * $BLKD_SBS_LANE_H)"/> + +<xsl:variable name="G_NumOfBridges" select="count(/EDKSYSTEM/BLKDSHAPES/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 > ($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 > ($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="/EDKSYSTEM/BLKDSHAPES/IPBUCKET/@MODS_H"><xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/IPBUCKET/@MODS_H"/></xsl:if> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/UNKBUCKET"> + + <xsl:variable name="unkBucketMods_H_"> + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/UNKBUCKET/@MODS_H"><xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/UNKBUCKET/@MODS_H"/></xsl:if> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/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/BLKDSHAPES/UNKBUCKET/@BIFS_H"><xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/UNKBUCKET/@BIFS_H"/></xsl:if> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/UNKBUCKET/@BIFS_H)">0</xsl:if> + </xsl:variable> + <xsl:variable name="total_UnkBif_H_" select="($unkBucktBifs_H_ * ($BLKD_MOD_H + $BLKD_BIF_H))"/> + + <xsl:value-of select="($total_UnkBif_H_ + $G_totalUnkMod_H_)"/> + </xsl:if> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/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> + +<!-- ======================= MAIN SVG BLOCK =============================== --> +<xsl:template match="EDKSYSTEM"> + +<!-- +<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> </xsl:text> +<svg width="{$G_total_diag_W}" height="{$G_total_diag_H}" viewBox="0 0 0 {$BLKD_ZOOM_Y}"> +<!-- + =============================================== + Layout All the various definitions + =============================================== +--> + <defs> + <!-- 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="@ARCH"/> + <xsl:with-param name="iPart" select="@PART"/> + <xsl:with-param name="iTimeStamp" select="@TIMESTAMP"/> + <xsl:with-param name="iEdkVersion" select="@EDKVERSION"/> + </xsl:call-template> + + <!-- IO Port Defs --> + <xsl:call-template name="Define_IOPorts"/> + + <!-- BIF Defs --> + <xsl:call-template name="Define_BifTypes"/> + + <!-- 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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE"> + <xsl:call-template name="Define_StandAlone_MPMC"/> + </xsl:if> + </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 shared busses + =========================================================== + --> + <use x="{$BLKD_INNER_X}" y="{$G_SharedBus_Y}" xlink:href="#group_sharedBusses"/> + + + <!-- + =========================================================== + Draw the Bus Lane Spaces + =========================================================== + --> + <xsl:call-template name="Draw_BlkDiagram_BusLaneSpaces"/> + + <!-- + =========================================================== + Draw the Bridges + =========================================================== + --> + <xsl:call-template name="Draw_BlkDiagram_Bridges"/> + + + <!-- + =========================================================== + Draw the Stacks + =========================================================== + --> + <xsl:call-template name="Draw_BlkDiagram_Stacks"/> + + <!-- + =========================================================== + Draw the Stand Alone MPMC, (if any) + =========================================================== + --> + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE"> + <xsl:variable name="mpmc_inst_" select="/EDKSYSTEM/BLKDSHAPES/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 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="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@EAST < /EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH)]"> + + <xsl:variable name="stack_line_x_"> + <xsl:call-template name="_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="_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="_gen_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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE/@INSTANCE"/> + <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/> + + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE"> + <xsl:variable name="currentLane_" select="position()"/> +<!-- + <xsl:message>Looking in space <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="_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="_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="/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="/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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@NAME"/></xsl:when> + <xsl:otherwise><xsl:value-of select="/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:variable name="space_line_X_"> + <xsl:call-template name="_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="_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="_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="_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:message>extSpaceWest_W_ <xsl:value-of select="$extSpaceWest_W_"/></xsl:message> + <xsl:message>extSpaceEast_W_ <xsl:value-of select="$extSpaceEast_W_"/></xsl:message> + <xsl:message>Found a MPMC lane in space <xsl:value-of select="$currentLane_"/> at X <xsl:value-of select="$lane_X_"/></xsl:message> + <xsl:message>mpmcBifRank <xsl:value-of select="$mpmcBifRank_"/></xsl:message> +--> + +<!-- + <xsl:variable name="laneInSpace_X_" select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/> +--> + <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_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="mpmcBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = @BUSNAME)]/@BIFRANK"/> + + <!-- + <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="BusType2Color"> + <xsl:with-param name="iBusType" 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}_Bif"/> + <text class="mpmcbiflabel" + x="{$bcl_X_ + ceiling($BLKD_BIF_W div 2)}" + y="{$bcl_Y_ + ceiling($BLKD_BIF_H div 2) + 3}"><xsl:value-of select="$mpmcBifName_"/></text> + + <!-- Place the MPMC bif --> + <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{@BUSSTD}_busconn_{$mpmcBifRank_}"/> + + <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 + (/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX * $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_ >= ($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_ < ($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 --> + <text class="p2pbuslabel" + x="{$bcArrow_X_ + $BLKD_BUS_ARROW_W + 6}" + y="{$bcArrow_Y_ + ceiling($mpmcBusHeight_ div 2) + 6}"><xsl:value-of select="$busName_"/></text> + + + </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="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="_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="_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="_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="_gen_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="/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE/BUSCONNS[(@ORIENTED = 'WEST')]/BUSCONN"> + <BRIDGE BUSINDEX="{@BUSINDEX}" INSTANCE="{../../@INSTANCE}" POSITION="{(position() -1)}"/> + <BRIDGECONN BUSINDEX="{@BUSINDEX}" INSTANCE="{../../@INSTANCE}" ORIENTED="{../@ORIENTED}" POSITION="{(position() - 1)}" BUSSTD="{@BUSSTD}" BIFRANK="{@BIFRANK}"/> + <!-- So both bus conns have same position.... --> + <xsl:if test="../../BUSCONNS[(@ORIENTED = 'EAST')]"> + <BRIDGECONN BUSINDEX="{../../BUSCONNS[(@ORIENTED ='EAST')]/BUSCONN/@BUSINDEX}" INSTANCE="{../../@INSTANCE}" ORIENTED="EAST" POSITION="{(position() - 1)}" BUSSTD="{../../BUSCONNS[(@ORIENTED = 'EAST')]/BUSCONN/@BUSSTD}" BIFRANK="{../../BUSCONNS[(@ORIENTED = 'EAST')]/BUSCONN/@BIFRANK}"/> + </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_)]/@BUSINDEX)"/> +<!-- + <xsl:variable name="max_bus_idx_" select="math:max(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUSINDEX)"/> + + <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="BusType2Color"> + <xsl:with-param name="iBusType" select="@BUSSTD"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="min_bus_idx_" select="math:min(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUSINDEX)"/> + <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_{@BIFRANK}"/> + + <!-- 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="@BUSINDEX"/></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 + (@BUSINDEX * $BLKD_SBS_LANE_H))"/> +--> + <xsl:variable name="vert_line_y1_" select="($G_SharedBus_Y + (@BUSINDEX * $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_ > $vert_line_y2_"> + <xsl:value-of select="$vert_line_y2_"/> + </xsl:when> + <xsl:when test="$vert_line_y2_ > $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_ > $vert_line_y2_"> + <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_)"/> + </xsl:when> + <xsl:when test="$vert_line_y2_ > $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="/EDKSYSTEM/BLKDSHAPES/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)"/> + + <text class="ipclass" + x="{$bucket_x_}" + y="{$bucket_y_ - 4}">IP</text> + + <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_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="BusType2Color"> + <xsl:with-param name="iBusType" select="'KEY'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="key_lt_col_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="'KEY'"/> + </xsl:call-template> + </xsl:variable> + + <symbol 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"/> + + <text class="intrsymbol" + x="1.5" + y="{7 + ceiling($BLKD_INTR_H div 2)}">x</text> + + </symbol> + + <symbol 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"/> + + <text class="intrsymbol" + x="1.5" + y="{7 + ceiling($BLKD_INTR_H div 2)}">x</text> + </symbol> + + <symbol 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"/> + + <text class="intrsymbol" + x="2" + y="7">y</text> + + <text class="intrsymbol" + x="{2 + ceiling($BLKD_INTR_W div 2)}" + y="7">x</text> + </symbol> + + + <symbol 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;"/> + + <text class="keytitle" + x="{ceiling($BLKD_KEY_W div 2)} " + y="14">KEY</text> + + <rect + x="0" + y="16" + width= "{$BLKD_KEY_W}" + height="16" + style="fill:{$COL_BG_LT}; stroke:none;"/> + + <text class="keyheader" + x="{ceiling($BLKD_KEY_W div 2)} " + y="30">SYMBOLS</text> + + <use x="32" y="47" xlink:href="#KEY_Bif" transform="scale(0.75)"/> + <text class="keylabel" + x="12" + y="60">bus interface</text> + + <use x="20" y="68" xlink:href="#KEY_SharedBus"/> + <text class="keylabel" + x="12" + y="85">shared bus</text> + + <text class="keylblul" + x="110" + y="47">Bus connections</text> + + <use x="110" y="58" xlink:href="#KEY_busconn_MASTER"/> + <text class="keylabel" + x="140" + y="72">master or initiator</text> + + <use x="110" y="{58 + (($BLKD_BIFC_H + 4) * 1)}" xlink:href="#KEY_busconn_SLAVE"/> + <text class="keylabel" + x="140" + y="{72 + (($BLKD_BIFC_H + 4) * 1)}">slave or target</text> + + <use x="110" y="{58 + (($BLKD_BIFC_H + 4) * 2)}" xlink:href="#KEY_busconn_MASTER_SLAVE"/> + <text class="keylabel" + x="140" + y="{72 + (($BLKD_BIFC_H + 4) * 2)}">master slave</text> + + <use x="110" y="{58 + (($BLKD_BIFC_H + 4) * 3)}" xlink:href="#KEY_busconn_MONITOR"/> + <text class="keylabel" + x="140" + y="{72 + (($BLKD_BIFC_H + 4) * 3)}">monitor</text> + + <text class="keylblul" + x="258" + y="47">External Ports</text> + + <use x="258" y="58" xlink:href="#KEY_INPort"/> + <text class="keylabel" + x="288" + y="72">input</text> + + <use x="258" y="{58 + ($BLKD_IOP_H * 1) + 4}" xlink:href="#KEY_OUTPort"/> + <text class="keylabel" + x="288" + y="{72 + ($BLKD_IOP_H * 1) + 4}">output</text> + + <use x="258" y="{58 + ($BLKD_IOP_H * 2) + 8}" xlink:href="#KEY_INOUTPort"/> + <text class="keylabel" + x="288" + y="{72 + ($BLKD_IOP_H * 2) + 8}">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> +<!-- + <text class="keylabel" + x="400" + y="134">source</text> + +--> + <rect + x="0" + y="160" + width= "{$BLKD_KEY_W}" + height="16" + style="fill:{$COL_BG_LT}; stroke:none;"/> + + <text class="keyheader" + x="{ceiling($BLKD_KEY_W div 2)} " + y="172">COLORS</text> + + + <text class="keylblul" + x="110" + y="190">Bus Standards</text> + + <xsl:variable name="dcr_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="fcb_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="fsl_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="col_lmb_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="opb_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="plb_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="ocm_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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:variable name="xil_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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_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)}">XIL (prefix) P2P</text> + + + <xsl:variable name="trs_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="'TRS'"/> + </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:{$trs_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)}">GEN. P2P, USER, etc</text> + +</symbol> +</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'"/> + + <symbol 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;"/> + + <text class="keytitle" + x="{ceiling($BLKD_SPECS_W div 2)} " + y="14">SPECS</text> + + <rect + x="0" + y="20" + width= "{$BLKD_SPECS_W}" + height="16" + style="fill:{$COL_BG_LT}; stroke:none;"/> + + <text class="specsheader" + x="4" + y="32">EDK VERSION</text> + +<!-- + <text class="specsvalue" + x="{($BLKD_SPECS_W + 1) - (string-length($blkd_edkver) * 6.5)}" + y="32"><xsl:value-of select="$blkd_edkver"/></text> +--> + <text class="specsvaluemid" + x="{($BLKD_SPECS_W + 1) - ceiling($BLKD_SPECS_W div 5)}" + y="32"><xsl:value-of select="$iEdkVersion"/></text> + + <rect + x="0" + y="40" + width= "{$BLKD_SPECS_W}" + height="16" + style="fill:{$COL_BG_LT}; stroke:none;"/> + + <text class="specsheader" + x="4" + y="52">ARCH</text> + +<!-- + <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> + + <rect + x="0" + y="60" + width= "{$BLKD_SPECS_W}" + height="16" + style="fill:{$COL_BG_LT}; stroke:none;"/> + + <text class="specsheader" + x="4" + y="72">PART</text> + +<!-- + <text class="specsvalue" + x="{($BLKD_SPECS_W + 1) - ((string-length($blkd_part) + 2) * 6.5)}" + y="72"><xsl:value-of select="$blkd_part"/></text> +--> + <text class="specsvaluemid" + x="{($BLKD_SPECS_W + 1) - ceiling($BLKD_SPECS_W div 5)}" + y="72"><xsl:value-of select="$iPart"/></text> + + <rect + x="0" + y="80" + width= "{$BLKD_SPECS_W}" + height="16" + style="fill:{$COL_BG_LT}; stroke:none;"/> + + <text class="specsheader" + x="4" + y="92">GENERATED</text> + + <text class="specsvalue" + x="{($BLKD_SPECS_W + 1) - (string-length($iTimeStamp) * 6.5)}" + y="92"><xsl:value-of select="$iTimeStamp"/></text> + + + </symbol> +</xsl:template> + + + + +</xsl:stylesheet> + +<!-- =========================================================================== --> +<!-- FUNCTION TEMPLATE --> +<!-- --> +<!-- =========================================================================== -->
\ No newline at end of file diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Peripherals.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Peripherals.xsl new file mode 100644 index 00000000..7498fe38 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Peripherals.xsl @@ -0,0 +1,1499 @@ +<?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_FreeCmplxModules"> + + <xsl:for-each select="BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@IS_PROMOTED and not(@IS_PENALIZED) and not(@STACK_INDEX))]"> + + <xsl:variable name="cmplxId_" select="position()"/> + + <xsl:if test="@MODCLASS='MEMORY_UNIT'"> + <xsl:call-template name="Define_PeripheralMemory"> + <xsl:with-param name="iPeriId" select="$cmplxId_"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="((@MODCLASS='MASTER_SLAVE') or (@MODCLASS = 'MONITOR'))"> + <xsl:variable name="modInst_" select="MODULE/@INSTANCE"/> + <xsl:variable name="modType_" select="/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:call-template> + </xsl:if> + + </xsl:for-each> +</xsl:template> + + +<xsl:template name="Define_PenalizedModules"> + + <xsl:for-each select="BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@IS_PROMOTED and @IS_PENALIZED)]"> + + <xsl:variable name="penalId_">unkmodule_<xsl:value-of select="@BKTROW"/>_<xsl:value-of select="@MODS_X"/></xsl:variable> + +<!-- + <xsl:message>Drawing penalized module <xsl:value-of select="$penalId_"/></xsl:message> +--> + + <xsl:if test="@MODCLASS='MEMORY_UNIT'"> + <xsl:call-template name="Define_PeripheralMemory"> + <xsl:with-param name="iPeriId" select="$penalId_"/> + </xsl:call-template> + </xsl:if> + +<!-- + <xsl:if test="((@MODCLASS='MASTER_SLAVE') or (@MODCLASS = 'MONITOR'))"> +--> + <xsl:variable name="modInst_" select="MODULE/@INSTANCE"/> + <xsl:variable name="modType_" select="/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="iUnkInst" select="$penalId_"/> + </xsl:call-template> +<!-- + </xsl:if> +--> + + </xsl:for-each> +</xsl:template> + + +<xsl:template name="Define_IPBucket"> + + <xsl:for-each select="BLKDSHAPES/IPBUCKET"> + + <xsl:for-each select="MODULE"> + + <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> + + <symbol 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> + + </symbol> + +</xsl:for-each> +</xsl:template> + + +<xsl:template name="Define_UNKBucket"> + + <xsl:for-each select="BLKDSHAPES/UNKBUCKET"> + + <symbol 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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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> + + + </symbol> + + </xsl:for-each> +</xsl:template> + + +<xsl:template name="Define_SBSBuckets"> + + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET"> + + <xsl:variable name="bus_name_" select="@BUSNAME"/> + <xsl:variable name="bus_std_" select="@BUSSTD"/> +<!-- + <xsl:variable name="bus_std_" select="BUSCONNS/BUSCONN/@BUSSTD"/> +--> + <xsl:variable name="bus_conn_w_" select="BUSCONNS/@BUSLANE_W"/> + + <xsl:variable name="bucket_bg_col_"> + <xsl:call-template name="BusType2LightColor"> + <xsl:with-param name="iBusType" select="$bus_std_"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="bucket_col_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$bus_std_"/> + </xsl:call-template> + </xsl:variable> + + + <xsl:for-each select="MODULE"> + + <xsl:sort data-type="text" select="@INSTANCE" order="ascending"/> + + <xsl:call-template name="Define_SBSBucketModule"> + <xsl:with-param name="iBifType" select="$bus_std_"/> + <xsl:with-param name="iIPType" select="@MODTYPE"/> + <xsl:with-param name="iIPName" select="@INSTANCE"/> + </xsl:call-template> + + </xsl:for-each> + + <symbol id="sbsbucket_{$bus_name_}"> + <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:{$bucket_col_}; fill:{$bucket_bg_col_}"/> + + <xsl:variable name="bkt_mods_w_" select="@MODS_W"/> + + <xsl:for-each select="MODULE"> + + <xsl:sort data-type="text" select="@INSTANCE" 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:{$bucket_col_}"/> + + </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_ > 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:{$bucket_col_}"/> + </xsl:if> + + </symbol> + + </xsl:for-each> + + +</xsl:template> + + +<xsl:template name="Define_SBSBucketModule"> + + <xsl:param name="iBifType" select="'OPB'"/> + <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="modBg_Col_"> + <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> + + <symbol id="sbsbktmodule_{$iIPName}"> + + <rect x="0" + y="{$BLKD_BIFC_H}" + rx="6" + ry="6" + width = "{$BLKD_MOD_W}" + height= "{$BLKD_MOD_H}" + style="fill:{$modBg_Col_}; 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="/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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@GROUP"/> + </text> + + </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:for-each select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/BUSINTERFACE[not(@BUSNAME = '__NOC__')]"> + + <xsl:variable name="bif_busstd_"> + <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_name_"> + <xsl:choose> + <xsl:when test="string-length(@NAME) <= 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="#{$bif_busstd_}_Bif"/> + +<!-- + <symbol id="{$bus_type}_busconn_SLAVE"> +--> + + <!-- 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="#{$bif_busstd_}_busconn_{@BIFRANK}"/> + + <text class="biflabel" + x="{$bif_x_ + ceiling($BLKD_BIF_W div 2)}" + y="{$bif_y_ + ceiling($BLKD_BIF_H div 2) + 3}"> + <xsl:value-of select="$bif_name_"/> + </text> + + </xsl:for-each> + + <xsl:if test="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@INTCINDEX"> + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="iIntcIdx" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_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="$intr_col_"/> + <xsl:with-param name="iIntr_IDX" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@INTCINDEX"/> + </xsl:call-template> + </xsl:if> + + + <xsl:for-each select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/INTCCNTLRTRGS/INTCTRG"> + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="intcIdx" select="@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_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="$intr_col_"/> + <xsl:with-param name="iIntr_PRI" select="@PRIORITY"/> + <xsl:with-param name="iIntr_IDX" select="@INTCINDEX"/> + </xsl:call-template> + + </xsl:for-each> + + </symbol> + +</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> + + <symbol 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}" +--> + + <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:if test="/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="/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$iIPName]/@GROUP"/> + </text> + + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/INTCCNTLRTRGS/INTCTRG"> + + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="iIntcIdx" select="@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_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="$intr_col_"/> + <xsl:with-param name="iIntr_PRI" select="@PRIORITY"/> + <xsl:with-param name="iIntr_IDX" select="@INTCINDEX"/> + </xsl:call-template> + + </xsl:for-each> + + </symbol> + +</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="_gen_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="/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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H) and not(/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H)">0</xsl:if> + + <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H)"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H"/> + </xsl:if> + + <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H)"> + <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/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="BusType2Color"> + <xsl:with-param name="iBusType" 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="_calc_PeriShape_Height"> + <xsl:with-param name="iShapeInst" select="$modName_"/> + </xsl:call-template> + </xsl:variable> + + <symbol 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="bciptype" + x="{ceiling($BLKD_MOD_W div 2)}" + y="{$label_y_ + 8}"> + <xsl:value-of select="$iModType"/> + </text> + + <text class="bciplabel" + x="{ceiling($BLKD_MOD_W div 2)}" + y="{$label_y_ + 16}"> + <xsl:value-of select="$iModInst"/> + </text> + + <xsl:if test="/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="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="/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$iModInst]/@GROUP"/> + </text> + + </xsl:if> + + <xsl:for-each select="/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$iModInst]/BUSINTERFACE[(@BIF_X and @BIF_Y and not(@BUSNAME = '__NOC__'))]"> + + <xsl:variable name="bif_busstd_"> + <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="BusType2Color"> + <xsl:with-param name="iBusType" select="$bif_busstd_"/> + </xsl:call-template> + </xsl:variable> + + + <xsl:variable name="bif_name_"> + <xsl:choose> + <xsl:when test="not(@NAME)">'UNK'</xsl:when> + <xsl:when test="string-length(@NAME) <= 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="#{$bif_busstd_}_Bif"/> + + <text class="biflabel" + 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="$bif_name_"/> + </text> + + </xsl:for-each> + +<!-- + <xsl:if test="@INTCINDEX"> + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="intcIdx" select="@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_draw_InterruptCntrl"> + <xsl:with-param name="intr_col" select="$intr_col_"/> + <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="@INTCINDEX"/> + </xsl:call-template> + </xsl:if> +--> + <xsl:if test="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@INTCINDEX"> + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="iIntcIdx" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_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="$intr_col_"/> + <xsl:with-param name="iIntr_IDX" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@INTCINDEX"/> + </xsl:call-template> + </xsl:if> + + + <xsl:for-each select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/INTCCNTLRTRGS/INTCTRG"> + + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="iIntcIdx" select="@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_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="$intr_col_"/> + <xsl:with-param name="iIntr_PRI" select="@PRIORITY"/> + <xsl:with-param name="iIntr_IDX" select="@INTCINDEX"/> + </xsl:call-template> + + </xsl:for-each> + + </symbol> +</xsl:template> + +<xsl:template name="Define_MemoryUnit"> + <xsl:param name="iShapeId" select="1000"/> + + <xsl:variable name="horiz_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@STACK_HORIZ_INDEX"/> + <xsl:variable name="is_multistk_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@IS_MULTISTK"/> + + <xsl:choose> + <xsl:when test="(($is_multistk_ = 'TRUE') or (/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@MODS_H"/> + <xsl:variable name="mods_w_" select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="/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="/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="_gen_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> +--> + + <symbol 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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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> + + </symbol> + +</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="memc_name_" select="MODULE[not(@MODCLASS = 'MEMORY')]/@INSTANCE"/> + <xsl:variable name="memc_busstd_" select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE/BUSCONNLANE[(BUSCONN[(@INSTANCE = $memc_name_)])]/@BUSSTD"/> + +<!-- + <xsl:variable name="memc_busstd_" select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE/BUSCONNLANE/@BUSSTD"/> + <xsl:variable name="memc_busstd_" select="/EDKSYSTEM/BCLANESPACES/BCLANESPACE/BUSCONNLANE[(BUSCONN[(@INSTANCE)])]/@BUSSTD"/> + <xsl:message>Memory cntlr name <xsl:value-of select="$memc_name_"/></xsl:message> + <xsl:message>Memory cntlr name <xsl:value-of select="$memc_name_"/></xsl:message> + <xsl:message>Memory cntlr busstd <xsl:value-of select="$memc_busstd_"/></xsl:message> +--> + + <xsl:variable name="peri_col_"> + + <xsl:choose> + <xsl:when test="$mods_w_ > 1"> + <xsl:value-of select="$COL_BG"/> + </xsl:when> + + <xsl:when test="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE/BUSCONNLANE[(BUSCONN[(@INSTANCE = $memc_name_)])]/@BUSSTD"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$memc_busstd_"/> + </xsl:call-template> + </xsl:when> + + <xsl:otherwise> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" 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="/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="/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="_gen_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> + + + <symbol 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_ > 1"> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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> + + </symbol> + +</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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE"> + + <xsl:variable name="mpmcInst_" select="@INSTANCE"/> + <xsl:variable name="mpmcType_" select="/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)"/> + + <symbol 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="bciptype" + x="{ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2)}" + y="{$label_y_ + 8}"> + <xsl:value-of select="$mpmcType_"/> + </text> + + <text class="bciplabel" + x="{ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2)}" + y="{$label_y_ + 16}"> + <xsl:value-of select="$mpmcInst_"/> + </text> + + <text class="mpmctitle" + x="{ceiling($mpmc_w_ div 2)}" + y="{$label_y_ + 16}">MPMC Module Interface</text> +<!-- +--> + + </symbol> + + </xsl:for-each> + +</xsl:template> + + +<!-- ======================= END DEF FUNCTIONS ============================ --> + +<!-- ======================= UTILITY FUNCTIONS ============================ --> + +<xsl:template name="_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_BLKD_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 > 9)">4.5</xsl:if> + <xsl:if test="not($iIntr_PRI > 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:template> + +<xsl:template name="_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_BLKD_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:template> + + +<xsl:template name="_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_BLKD_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:template> + +<xsl:template name="_calc_CStackShapesAbv_Height"> + <xsl:param name="iCStackIndex" select="100"/> + <xsl:param name="iCSactkMods_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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@CSTACK_INDEX = $iCStackIndex)])">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@CSTACK_INDEX = $iCStackIndex) and (@CSTACK_MODS_Y < $iCStackMods_Y))]"> + + <xsl:variable name="shapeHeight_"> + + <xsl:choose> + + <xsl:when test="@MODCLASS = 'PERIPHERAL'"> + <xsl:call-template name="_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="_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="_calc_PeriShape_Height"> + <xsl:param name="iShapeInst" select="'_shape_'"/> + +<!-- + <xsl:message>Calculating height of <xsl:value-of select="$shapeInst"/></xsl:message> +--> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H) and not(/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)">0</xsl:if> + + <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)"> + <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/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="(/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)"> + <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/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="(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)"> + <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/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="_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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)])">0</xsl:if> + + <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE/@BIFS_H)"> + <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/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="_calc_MemoryUnit_Height"> + <xsl:param name="iShapeId" select="1000"/> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)])">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]"> + + <!-- Store the memory controller heights in a variable --> + <xsl:variable name="memC_heights_"> + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')])"> + <MEM_CNTLR INSTANCE="{@INSTANCE}" HEIGHT="0"/> + </xsl:if> + + <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')])"> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')]"> + <xsl:variable name="memC_height_"> + <xsl:call-template name="_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(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')])"> + <BRAM INSTANCE="{@INSTANCE}" HEIGHT="0"/> + </xsl:if> + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')]"> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')]"> + <xsl:variable name="bram_height_"> + <xsl:call-template name="_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="_calc_SbsBucket_Height"> + <xsl:param name="iBucketId" select="100"/> + +<!-- + <xsl:message>Looking of height of bucket <xsl:value-of select="$bucketId"/></xsl:message> +--> + <xsl:variable name="bkt_gap_" select="$BLKD_BIF_H"/> + + <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $iBucketId)])">0</xsl:if> + + <xsl:if test="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $iBucketId)]"> + <xsl:variable name="mods_h_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $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="_gen_Proc_StackName"> +<xsl:param name="iProcInst" select="'_unknown_'"/> +symbol_STACK_<xsl:value-of select="$iProcInst"/> +</xsl:template> + +<xsl:template name="_gen_Proc_GroupName"> +<xsl:param name="iProcInst" select="'_unknown_'"/> +symbol_GROUP_<xsl:value-of select="$iProcInst"/> +</xsl:template> + + +<xsl:template name="_gen_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="_gen_Stack_Name"><xsl:param name="iHorizIdx" select="'_unknown_'"/>symbol_STACK_<xsl:value-of select="$iHorizIdx"/></xsl:template> +<xsl:template name="_gen_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/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Processors.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Processors.xsl new file mode 100644 index 00000000..9e35694e --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_Processors.xsl @@ -0,0 +1,390 @@ +<?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="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@EAST < /EDKSYSTEM/BLKDSHAPES/@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="/EDKSYSTEM/BLKDSHAPES/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="/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="/EDKSYSTEM/BLKDSHAPES/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="/EDKSYSTEM/BLKDSHAPES/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="_calc_Stack_Width"> + <xsl:with-param name="iStackIdx" select="$iStackIdx"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pstackH_"> + <xsl:call-template name="_calc_Stack_Height"> + <xsl:with-param name="iStackIdx" select="$iStackIdx"/> + </xsl:call-template> + </xsl:variable> + + <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="_gen_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--> + <symbol 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="/EDKSYSTEM/BLKDSHAPES/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="_gen_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="_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="/EDKSYSTEM/BLKDSHAPES/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="_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}"/> + + <text class="ipclass" + x="{$bucketX_}" + y="{$bucketY_ - 4}">SLAVES OF <xsl:value-of select="@BUSNAME"/></text> + </xsl:for-each> + + <!-- Then draw the the processor itself --> + <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]"> + <xsl:sort select="@SHAPE_VERTI_INDEX" data-type="number"/> + + <xsl:variable name="procY_"> + <xsl:call-template name="_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="_gen_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" + x="{$procX_}" + y="{$procY_ - 4}">PROCESSOR</text> + </xsl:if> + + <xsl:if test = "@IS_LIKEPROC = 'TRUE'"> + <text class="ipclass" + x="{$procX_}" + y="{$procY_ - 4}">USER MODULE</text> + </xsl:if> + + </xsl:for-each> + </symbol> +</xsl:template> + + +<xsl:template name="Define_Processor"> + <xsl:param name="iProcInst" select="@INSTANCE"/> + <xsl:param name="iModType" select="/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$iProcInst]/@MODTYPE"/> +<!-- + <xsl:param name="procType" select="/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$procInst]/@PROCTYPE"/> +--> + + <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="_gen_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> +--> + + <symbol 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:if test="/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="/EDKSYSTEM/MODULES/MODULE[@INSTANCE = $iProcInst]/@GROUP"/> + </text> + + </xsl:if> + + + <xsl:for-each select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/BUSINTERFACE[(@BIF_X and @BIF_Y)]"> + + <xsl:variable name="bif_busstd_"> + <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_buscol_"> + <xsl:call-template name="BusType2Color"> + <xsl:with-param name="iBusType" select="$bif_busstd_"/> + </xsl:call-template> + </xsl:variable> + + + <xsl:variable name="bif_name_"> + <xsl:choose> + <xsl:when test="string-length(@NAME) <= 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:{$bif_buscol_};stroke-width:1"/> + + <use x="{$bif_x_}" y="{$bif_y_}" xlink:href="#{$bif_busstd_}_Bif"/> + + <text class="biflabel" + x="{$bif_x_ + ceiling($BIF_W div 2)}" + y="{$bif_y_ + ceiling($BIF_H div 2) + 3}"> + <xsl:value-of select="$bif_name_"/> + </text> + + </xsl:for-each> + + <xsl:variable name="interrupt_cntlr_"> + <xsl:choose> + <xsl:when test="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iProcInst)]/@INTERRUPT_CNTLR"> + <xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iProcInst)]/@INTERRUPT_CNTLR"/> + </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_)]/@INTCINDEX"/></xsl:message> +--> + <xsl:if test="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/@INTCINDEX"> + + <xsl:variable name="intr_col_"> + <xsl:call-template name="intcIdx2Color"> + <xsl:with-param name="iIntcIdx" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/@INTCINDEX"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="_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="$intr_col_"/> + <xsl:with-param name="iIntr_IDX" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/@INTCINDEX"/> + </xsl:call-template> + </xsl:if> + + </symbol> +</xsl:template> + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLDatasheet.css b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLDatasheet.css new file mode 100644 index 00000000..c1b40cf8 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLDatasheet.css @@ -0,0 +1,119 @@ + 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.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: 7pt; + font-style: italic; + font-weight: 900; + text-anchor: middle; + font-family: 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.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.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.proclabel { + fill: #810017; + stroke: none; + font-size: 14pt; + font-style: normal; + font-weight: bold; + text-anchor: middle; + font-family: Verdana Arial Helvetica sans-serif; + } + + text.opblabel { + fill: #339900; + stroke: none; + font-size: 11pt; + font-style: normal; + font-weight: 900; + text-anchor: middle; + font-family: Arial Helvetica sans-serif; + } + + text.lmblabel { + fill: #9999FF; + stroke: none; + font-size: 11pt; + font-style: normal; + font-weight: 900; + text-anchor: middle; + font-family: 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; + } diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLDatasheet.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLDatasheet.xsl new file mode 100644 index 00000000..f9141538 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLDatasheet.xsl @@ -0,0 +1,1211 @@ +<?xml version="1.0" standalone="no"?> +<xsl:stylesheet version="1.0" + 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="html"/> + +<xsl:include href="MdtXdsGen_HTMLIPSection.xsl"/> +<xsl:include href="MdtXdsGen_HTMLMemoryMap.xsl"/> +<xsl:include href="MdtXdsGen_HTMLTOCTree.xsl"/> + +<xsl:param name="DS_TYPE" select="'NOFRAMES'"/> +<xsl:param name="DS_PART" select="'TOC_TREE'"/> + +<xsl:param name="DS_WIDTH" select="850"/> +<xsl:param name="DS_TOC_WIDTH" select="200"/> + +<xsl:param name="DS_FRAME_TOC" select="'DS_TOC'"/> +<xsl:param name="DS_FRAME_SELF" select="'_self'"/> +<xsl:param name="DS_FRAME_MAIN" select="'DS_FMAIN'"/> + +<xsl:param name="DS_HTML_BLKD" select="'ds_Blkd.html'"/> + +<xsl:param name="DS_HTML_MAIN" select="'ds_Main.html'"/> +<xsl:param name="DS_HTML_TOC" select="'ds_TOC.html'"/> +<xsl:param name="DS_HTML_TOCTREE" select="'ds_TOCTree.html'"/> + +<xsl:param name="DS_BLKD_NAME" select="'system_blkd.jpg'"/> +<xsl:param name="DS_BLKD_TYPE" select="'svg'"/> +<xsl:param name="DS_BLKD_WIDTH" select="800"/> +<xsl:param name="DS_BLKD_HEIGHT" select="600"/> + +<xsl:param name="DS_COL_OPB" select="'#339900'"/> + +<xsl:param name="DS_COL_INFO" select="'#2233FF'"/> +<xsl:param name="DS_COL_ASH" select="'#DEDEDE'"/> +<xsl:param name="DS_COL_ASH1" select="'#F0F0F8'"/> +<xsl:param name="DS_COL_GREY" select="'#BBBBBB'"/> +<xsl:param name="DS_COL_LGRY" select="'#F1F1F1'"/> +<xsl:param name="DS_COL_XPRP" select="'#810017'"/> +<xsl:param name="DS_COL_RED" select="'#FF1010'"/> +<xsl:param name="DS_COL_GREEN" select="'#33CC33'"/> +<xsl:param name="DS_COL_BLACK" select="'#000000'"/> +<xsl:param name="DS_COL_WHITE" select="'#FFFFFF'"/> + +<!-- +<xsl:param name="DS_COL_ATTR_RD" select="'#FF5555'"/> +<xsl:param name="DS_COL_ATTR_GREN" select="'#55FF55'"/> +<xsl:param name="DS_COL_ATTR_BLE" select="'#5555FF'"/> +--> + +<xsl:param name="DS_COL_ATTR_BUF" select="'#FF5555'"/> +<xsl:param name="DS_COL_ATTR_CLK" select="'#55FF55'"/> +<xsl:param name="DS_COL_ATTR_INT" select="'#5555FF'"/> +<xsl:param name="DS_COL_ATTR_RST" select="'#FFCC00'"/> + + +<xsl:param name="DS_COL_MODUSR" select="'#FFFFAA'"/> +<xsl:param name="DS_COL_MODSYS" select="'#AAAAFF'"/> +<xsl:param name="DS_COL_MODSYSNW" select="'#000099'"/> + +<!-- ======================= MAIN DATASHEET SECTION =============================== --> +<xsl:template match="EDKSYSTEM"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:call-template name="Write_Main"/> + </xsl:if> + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:call-template name="Write_Frames"/> + </xsl:if> +</xsl:template> + +<xsl:template name="Write_Frames"> +<!-- + <xsl:if test="$DS_PART='TOC'"> + <xsl:call-template name="Write_TOC"/> + </xsl:if> +--> + + <xsl:if test="$DS_PART='TOC'"> + <xsl:call-template name="Write_TOCTree"/> + </xsl:if> + + <xsl:if test="$DS_PART='INDEX'"> + <xsl:call-template name="Write_Index"/> + </xsl:if> + + <xsl:if test="$DS_PART='MAIN'"> + <xsl:call-template name="Write_Main"/> + </xsl:if> + + <xsl:if test="$DS_PART='BLKD'"> + <xsl:call-template name="Write_BLKD"/> + </xsl:if> + +</xsl:template> + +<xsl:template name="Write_TOC"> +<HTML> +<HEAD> + <TITLE>Table of Contents</TITLE> + <BASE target="{$DS_FRAME_MAIN}"/> +</HEAD> + + <!--Layout Table of contents --> + <BODY class="main_body"> + <xsl:call-template name="Layout_TOC"/> + </BODY> + +</HTML> +</xsl:template> + +<xsl:template name="Write_Index"> +<HTML> +<HEAD><TITLE>EDK Project Report</TITLE></HEAD> + <FRAMESET COLS="20%,80%" BORDER="0" FRAMESPACING="0"> + <FRAME SRC="{$DS_HTML_TOC}" + MARGINWIDTH="0" + MARINHEIGHT="0" + FRAMEBORDER="NO" + BORDER="NO" + NAME="{$DS_FRAME_TOC}" + SCROLLING="YES"/> + <FRAME SRC="{$DS_HTML_MAIN}" + MARGINWIDTH="0" + MARINHEIGHT="0" + FRAMEBORDER="NO" + BORDER="NO" + NAME="{$DS_FRAME_MAIN}" + SCROLLING="YES"/> + </FRAMESET> +</HTML> +</xsl:template> + +<xsl:template name="Write_BLKD"> +<HTML> + +<HEAD><TITLE>Block Diagram</TITLE></HEAD> + +<!-- + <xsl:message> Embedded image name <xsl:value-of select="$DS_BLKD_NAME"/></xsl:message> + <xsl:message> Embedded image name <xsl:value-of select="$DS_BLKD_NAME"/></xsl:message> + <xsl:message> Embedded image type <xsl:value-of select="$DS_BLKD_TYPE"/></xsl:message> + <xsl:message> Embedded image width <xsl:value-of select="$DS_BLKD_WIDTH"/></xsl:message> + <xsl:message> Embedded image height <xsl:value-of select="$DS_BLKD_HEIGHT"/></xsl:message> +--> + + <BODY class="main_body"> + + <xsl:if test="$DS_BLKD_TYPE = 'svg'"> + <EMBED src="{$DS_BLKD_NAME}" width="{$DS_BLKD_WIDTH}" height="{$DS_BLKD_HEIGHT}" type="image/svg+xml"/> + </xsl:if> + + <xsl:if test="not($DS_BLKD_TYPE = 'svg')"> + <IMG SRC="{$DS_BLKD_NAME}" alt="BlockDiagram" width="{$DS_BLKD_WIDTH}" height="{$DS_BLKD_HEIGHT}" border="0" vspace="0" hspace="0"/> + </xsl:if> + <BR></BR> + <BR></BR> + <xsl:call-template name="Layout_ExternalPorts"/> + <BR></BR> + </BODY> +</HTML> +</xsl:template> + + +<xsl:template name="Write_Main"> +<html> + <!--Layout head --> + <head> + <title>EDK PROJECT REPORT</title> + + <!--specify a css for the file --> + <meta http-equiv="PRAGMA" content="NO-CACHE"/> + <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1"/> + + </head> + + <body bgcolor="#FFFFFF"> + + <!--Layout Table of contents --> + <xsl:if test="not($DS_TYPE='FRAMES')"> + <xsl:call-template name="Layout_TOC"/> + </xsl:if> + + <TABLE BGCOLOR="{$DS_COL_WHITE}" WIDTH="{$DS_WIDTH}" COLS="1" cellspacing="0" cellpadding="3" border="0"> + +<!-- ==========================Overview Section ============== --> + <TR></TR> + <TR></TR> + <TR></TR> + <xsl:if test="$DS_TYPE='FRAMES'"> + <TD COLSPAN="1" ALIGN="LEFT"> + <A HREF="ds_MainNF.html" target="_top" style="text-decoration:none"><SPAN style="color:{$DS_COL_GREEN}; font: normal 14px Verdana Arial,Helvetica,sans-serif">Printable Version</SPAN></A> + </TD> + <TR></TR> + </xsl:if> + <TD COLSPAN="1" WIDTH="100%"> + <A name="_Overview"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Overview'"/> + </xsl:call-template> + <BR></BR> + <BR></BR> + <xsl:call-template name="Layout_Overview"/> + </TD> + +<!-- ==========================Block Diagram section ============== --> +<!-- + <xsl:message> Embedded image name <xsl:value-of select="$DS_BLKD_NAME"/></xsl:message> +--> + <TR></TR> + <TD COLSPAN="1"> + <A name="_BlockDiagram"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Block Diagram'"/> + </xsl:call-template> + <BR></BR> + <BR></BR> + <IMG SRC="imgs/{$DS_BLKD_NAME}" alt="BlockDiagram" border="0" vspace="0" hspace="0"/> + </TD> + +<!-- +--> + +<!-- ========================== External Ports ======================= --> + + <TR></TR> + <TD COLSPAN="1" WIDTH="100%"> + <A name="_ExternalPorts"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'External Ports'"/> + </xsl:call-template> + <BR></BR> + <BR></BR> + <xsl:call-template name="Layout_ExternalPorts"/> + </TD> + +<!-- ========================== Memory Map Section ======================= --> +<!--- + <xsl:if test="MODULES/MODULE[@MODCLASS='PROCESSOR']/MEMORYMAP"> + <TR></TR> + <TD COLSPAN="1"> + <A name="_MemoryMap"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'MEMORY MAP'"/> + </xsl:call-template> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='PROCESSOR']"> + <xsl:sort select="@INSTANCE"/> + <xsl:call-template name="Layout_MemoryMap"/> + </xsl:for-each> + </TD> + </xsl:if> +--> + +<!-- ========================== Processor Information Section ================== --> + <TR></TR> + <TD COLSPAN="1" WIDTH="100%"> + <A name="_Processor"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Processors'"/> + </xsl:call-template> + <BR></BR> + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[((@MODCLASS='PROCESSOR') and (contains(@MODTYPE,'microblaze')))]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + + <xsl:for-each select="MODULES/MODULE[((@MODCLASS='PROCESSOR') and (contains(@MODTYPE,'ppc')))]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + +<!-- + <TR></TR> + <xsl:if test="MODULES/MODULE[@MODCLASS='PROCESSOR_DEBUG']"> + <A name="_Debug"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Debuggers'"/> + </xsl:call-template> + <BR></BR> + + <xsl:for-each select="MODULES/MODULE[@MODCLASS='PROCESSOR_DEBUG']"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </xsl:if> +--> + +<!-- + <xsl:if test="MODULES/MODULE[@MODCLASS='INTERRUPT_CONTROLLER']"> + <A name="_Intc"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Interrupt Controllers'"/> + </xsl:call-template> + <BR></BR> + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='INTERRUPT_CONTROLLER']"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + + </xsl:if> + </TABLE> + </TD> + + <xsl:for-each select="MODULES/MODULE[@MODCLASS='INTERRUPT_CONTROLLER']"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> +--> + +<!-- ========================== Debugger Section ================== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='DEBUG')]"> + <TR></TR> + <TD COLSPAN="1"> + <A name="_Debug"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Debuggers'"/> + </xsl:call-template> + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='DEBUG')]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + </xsl:if> + +<!-- ========================== Interrupt Controllers Section ================== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='INTERRUPT_CNTLR')]"> + <TR></TR> + <TD COLSPAN="1"> + <A name="_Intc"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Interrupt Controllers'"/> + </xsl:call-template> + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='INTERRUPT_CNTLR')]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + </xsl:if> + + +<!-- ========================== Bus Information Section ================== --> + <TR></TR> + <TD COLSPAN="1"> + <A name="_BusModules"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Busses'"/> + </xsl:call-template> + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[((@MODCLASS='BUS') or (@MODCLASS='BUS_ARBITER'))]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + +<!-- ========================== Bridge Information Section ================== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='BUS_BRIDGE')]"> + <TR></TR> + <TD COLSPAN="1"> + <BR></BR> + <A name="_BridgeModules"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Bus Bridges'"/> + </xsl:call-template> + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='BUS_BRIDGE')]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + + </TD> + </xsl:if> + +<!-- ========================== Memory Information Section ============== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='MEMORY')]"> + <TR></TR> + <TD COLSPAN="1"> + <A name="_MemoryModules"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Memory'"/> + </xsl:call-template> + + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='MEMORY')]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + </xsl:if> +<!-- ========================== Memory Controller Information Section ============== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='MEMORY_CNTLR')]"> + <TR></TR> + <TD COLSPAN="1"> + <A name="_MemCntlrModules"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Memory Controllers'"/> + </xsl:call-template> + + <TABLE align="left" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='MEMORY_CNTLR')]"> + <xsl:sort select="@INSTANCE"/> + <TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + </xsl:if> + +<!-- ========================== Peripheral Information Section ============== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='PERIPHERAL')]"> + <TR></TR> + <TD COLSPAN="1" align="left"> + <A name="_Peripherals"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Peripherals'"/> + </xsl:call-template> + <TABLE align="left" COLS="1" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='PERIPHERAL')]"> + <xsl:sort select="@INSTANCE"/> + <TD ROWSPAN="2"/><TR/> + <TD ROWSPAN="2"/><TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + </xsl:if> + +<!-- ========================== IP Information Section ====================== --> + <xsl:if test="MODULES/MODULE[(@MODCLASS='IP')]"> + <TR></TR> + <TD COLSPAN="1" align="left"> + <A name="_IPModules"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'IP'"/> + </xsl:call-template> + <BR></BR> + <TABLE align="left" COLS="1" width="{$DS_WIDTH}" cellspacing="0" cellpadding="0" border="0"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='IP')]"> + <xsl:sort select="@INSTANCE"/> + <TD ROWSPAN="2"/><TR/> + <TD ROWSPAN="2"/><TR/> + <TD COLSPAN="1" align="left"> + <xsl:call-template name="Layout_IPSection"/> + </TD> + </xsl:for-each> + </TABLE> + </TD> + </xsl:if> + + <!--Timing Information section --> + <TR></TR> + <TD COLSPAN="1"> + <A name="_TimingInfo"/> + <xsl:call-template name="Layout_NavigateHeader"> + <xsl:with-param name="header_name" select="'Timing Information'"/> + </xsl:call-template> + <BR></BR> + <BR></BR> + <xsl:call-template name="Layout_TimingInfo"/> + </TD> + <TR></TR> + <TD COLSPAN="1" align="left"> + <BR></BR> + <BR></BR> + <TABLE BGCOLOR="{$DS_COL_WHITE}" WIDTH="{$DS_WIDTH}" COLS="3" cellspacing="0" cellpadding="0" border="0"> + <TD COLSPAN="3" width="100%" align="middle" BGCOLOR="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 5px Verdana,Arial,Helvetica,sans-serif">line</SPAN></TD> + <TR></TR> + <TD COLSPAN="1" width="25%" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@TIMESTAMP"/></SPAN> + </TD> + <TD COLSPAN="2" width="75%" align="middle"> + <A HREF="http://www.xilinx.com" style="text-decoration:none"><SPAN style="color:{$DS_COL_INFO}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">www.xilinx.com</SPAN></A> + <BR></BR> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">1-800-255-7778</SPAN> + </TD> + </TABLE> + </TD> + + + </TABLE> +</body> +</html> + +</xsl:template> + +<!-- ======================= LAYOUT TABLE OF CONTENTS ====================================== --> +<xsl:template name="Layout_TOC"> + +<xsl:variable name="toc_col_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="$DS_COL_LGRY"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:if> +</xsl:variable> + +<xsl:variable name="toc_width_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="$DS_WIDTH"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_TOC_WIDTH"/> + </xsl:if> +</xsl:variable> + +<xsl:variable name="toc_target_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="$DS_FRAME_SELF"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_FRAME_MAIN"/> + </xsl:if> +</xsl:variable> + +<xsl:variable name="trg_html_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="''"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_HTML_MAIN"/> + </xsl:if> +</xsl:variable> + + +<A name="_TOC"/> +<TABLE BGCOLOR="{$toc_col_}" WIDTH="{$toc_width_}" COLS="2" cellspacing="0" cellpadding="3" border="0"> + + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <TH COLSPAN="2" width="100%" align="middle"><SPAN style="color:{$DS_COL_XPRP}; font: bold 20px Arial,Helvetica,sans-serif">TABLE OF CONTENTS</SPAN></TH> + </xsl:if> + + <TR></TR> + <TD COLSPAN="1" width="40%" align="left"> + <BR></BR> + <A HREF="{$trg_html_}#_Overview" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Overview</SPAN></A> + + <BR></BR> + <A HREF="{$trg_html_}#_BlockDiagram" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Block Diagram</SPAN></A> + + <BR></BR> + <A HREF="{$trg_html_}#_ExternalPorts" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">External Ports</SPAN></A> + +<!-- + <BR></BR> + <xsl:if test="MODULES/MODULE[@MODCLASS='PROCESSOR']/MEMORYMAP"> + <A HREF="{$trg_html_}#_MemoryMap" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Memory Map</SPAN></A> + </xsl:if> +--> + + <BR></BR> + <xsl:variable name="proc_CNT" select="count(MODULES/MODULE[@MODCLASS = 'PROCESSOR'])"/> + <xsl:if test="$proc_CNT > 1"> + <A HREF="{$trg_html_}#_Processor" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Processors</SPAN></A> + </xsl:if> + <xsl:if test="not($proc_CNT > 1)"> + <A HREF="{$trg_html_}#_Processor" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Processor</SPAN></A> + </xsl:if> + + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='PROCESSOR')]"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + <xsl:if test="MEMORYMAP/MEMRANGE[(@INSTANCE)]"> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}_MemoryMap" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">          memory map</SPAN></A> + </xsl:if> + </xsl:for-each> + + <xsl:if test="MODULES/MODULE[@MODCLASS='PROCESSOR_DEBUG']"> + <BR></BR> + <A HREF="{$trg_html_}#_Debug" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana Arial,Helvetica,sans-serif">Debuggers</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='PROCESSOR_DEBUG']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='INTERRUPT_CONTROLLER']"> + <BR></BR> + <A HREF="{$trg_html_}#_Intc" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana Arial,Helvetica,sans-serif">Interrupt Controllers</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='INTERRUPT_CONTROLLER']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='BUS' or @MODCLASS='BUS_ARBITER']"> + <BR></BR> + <A HREF="{$trg_html_}#_BusModules" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Busses</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='BUS' or @MODCLASS='BUS_ARBITER']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='BUS_BRIDGE']"> + <BR></BR> + <A HREF="{$trg_html_}#_BridgeModules" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Bridges</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='BUS_BRIDGE']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='MEMORY']"> + <BR></BR> + <A HREF="{$trg_html_}#_MemoryModules" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Memory</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='MEMORY']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='MEMORY_CONTROLLER']"> + <BR></BR> + <A HREF="{$trg_html_}#_MemCntlrModules" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Memory Controllers</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='MEMORY_CONTROLLER']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='PERIPHERAL']"> + <BR></BR> + <A HREF="{$trg_html_}#_Peripherals" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Peripherals</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='PERIPHERAL']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Courier Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='IP']"> + <BR></BR> + <A HREF="{$trg_html_}#_IPModules" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">IP</SPAN></A> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='IP']"> + <xsl:sort select="@INSTANCE"/> + <BR></BR> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Courier Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if></A> + </xsl:for-each> + </xsl:if> + + <BR></BR> + <A HREF="{$trg_html_}#_TimingInfo" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Timing Information</SPAN></A> + </TD> + +</TABLE> +</xsl:template> +<!-- ======================= END LAYOUT TABLE OF CONTENT =================================== --> + +<!-- ============================== LAYOUT SNAPSHOT ====================================== --> +<xsl:template name="Layout_Overview"> + +<xsl:variable name="cnt_ip_" select="count(MODULES/MODULE)"/> +<xsl:variable name="cnt_proc_" select="count(MODULES/MODULE[@MODCLASS = 'PROCESSOR'])"/> +<xsl:variable name="cnt_busses_" select="count(MODULES/MODULE[@MODCLASS = 'BUS'])"/> +<TABLE width="{$DS_WIDTH}" valign="top" align="left" border="0" cellpadding="0" cellspacing="1" COLS="2" BGCOLOR="{$DS_COL_BLACK}"> + + <TD COLSPAN="2" ALIGN="middle" BGCOLOR="{$DS_COL_XPRP}"> + <SPAN style="color:{$DS_COL_WHITE}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Overview</SPAN> + </TD> + <TR/> + + <xsl:if test="@TIMESTAMP"> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">Generated on</SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@TIMESTAMP"/></SPAN> + </TD> + <TR></TR> + </xsl:if> + + <xsl:if test="@PROJECTSRC"> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">Source</SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"> +<!-- + <A HREF="{@PROJECTSRC}" style="text-decoration:none; color:{$DS_COL_XPRP}"><xsl:value-of select="@PROJECTSRC"/></A> +--> + <xsl:value-of select="@PROJECTSRC"/> + </SPAN> + </TD> + <TR></TR> + </xsl:if> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">EDK Version</SPAN> + </TD> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <xsl:if test="@EDKVERSION"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@EDKVERSION"/></SPAN> + </xsl:if> + <xsl:if test="not(@EDKVERSION)"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">NA</SPAN> + </xsl:if> + </TD> + <TR/> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">FPGA Family</SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <xsl:if test="@ARCH"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@ARCH"/></SPAN> + </xsl:if> + <xsl:if test="not(@ARCH)"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 10px Verdana,Arial,Helvetica,sans-serif">NA</SPAN> + </xsl:if> + </TD> + <TR/> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif">Device</SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <xsl:if test="@PART"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@PART"/></SPAN> + </xsl:if> + <xsl:if test="not(@PART)"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">-</SPAN> + </xsl:if> + </TD> + <TR/> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: Normal 12px Verdana,Arial,Helvetica,sans-serif"># IP Instantiated </SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$cnt_ip_"/></SPAN> + </TD> + <TR/> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"># Processors </SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$cnt_proc_"/></SPAN> + </TD> + <TR/> + + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="left"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"># Busses </SPAN> + </TD> + <TD COLSPAN="1" BGCOLOR="{$DS_COL_WHITE}" align="middle"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$cnt_busses_"/></SPAN> + </TD> + <TR/> + + +</TABLE> + +</xsl:template> + +<!-- ============================== END LAYOUT SNAPSHOT =================================== --> + +<!-- ============================== LAYOUT INTRODUCTION =================================== --> +<xsl:template name="Layout_Introduction"> +</xsl:template> +<!-- ============================== END INTRODUCTION ==================================== --> + +<!-- ============================== External Ports ==================================== --> +<xsl:template name="Layout_ExternalPorts"> + + <xsl:variable name="gpin_CNT_" select="count(EXTERNALPORTS/PORT)"/> + <xsl:variable name="ipin_CNT_" select="count(EXTERNALPORTS/PORT[@DIR='I'])"/> + <xsl:variable name="opin_CNT_" select="count(EXTERNALPORTS/PORT[@DIR='O'])"/> + <xsl:variable name="iopin_CNT_" select="count(EXTERNALPORTS/PORT[@DIR='IO'])"/> + + <xsl:variable name="table_width_"> + <xsl:if test="$gpin_CNT_ > 16"><xsl:value-of select="$DS_WIDTH"/></xsl:if> + <xsl:if test="$gpin_CNT_ <= 16"><xsl:value-of select="$DS_WIDTH"/></xsl:if> + + </xsl:variable> + + <xsl:variable name="left_extra_"> + <xsl:if test="($gpin_CNT_ mod 2) = 1">1</xsl:if> + <xsl:if test="not(($gpin_CNT_ mod 2) = 1)">0</xsl:if> + </xsl:variable> + + <xsl:variable name="num_left_" select="floor($gpin_CNT_ div 2) + $left_extra_"/> + <xsl:variable name="num_rhgt_" select="floor($gpin_CNT_ div 2)"/> + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="{$table_width_}" COLS="8" cellspacing="1" cellpadding="1" border="0"> + + <TD COLSPAN="8" ALIGN="middle" BGCOLOR="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">EXTERNAL PORTS</SPAN></TD> + <TR></TR> + <TD COLSPAN="8" ALIGN="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + These are the external ports defined in the MHS file. + </SPAN> + </TD> + + <TR></TR> + <TD COLSPAN="8" ALIGN="left" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">Attributes Key</SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_BLACK}; font: italic 9px Verdana,Arial,Helvetica,sans-serif">The attributes are obtained from the SIGIS and IOB_STATE parameters set on the PORT in the MHS file </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_ATTR_CLK}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">CLK</SPAN> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">  indicates Clock ports, (SIGIS = CLK) </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_ATTR_INT}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">INTR</SPAN> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">  indicates Interrupt ports,(SIGIS = INTR) </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_ATTR_RST}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">RESET</SPAN> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">  indicates Reset ports, (SIGIS = RST) </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">BUF or REG</SPAN> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">  Indicates ports that instantiate or infer IOB primitives, (IOB_STATE = BUF or REG) </SPAN> + </TD> + + <xsl:if test="$gpin_CNT_ <= 16"> + + <TR></TR> + + <TD COLSPAN="7" ALIGN="left" bgcolor="{$DS_COL_WHITE}"> + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="100%" COLS="9" cellspacing="1" cellpadding="0" border="0"> + + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">#</SPAN></TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TD> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">DIR</SPAN></TD> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">[LSB:MSB]</SPAN></TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIG</SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">ATTRIBUTES</SPAN></TD> + + <xsl:for-each select="EXTERNALPORTS/PORT"> + <xsl:sort data-type="number" select="@INDEX" order = "ascending"/> + +<!-- + <xsl:message>The end of the string is <xsl:value-of select="substring(@GROUP,(string-length(@GROUP) -string-length(@GROUP)) + 1)"/></xsl:message> + <xsl:message>The letter is <xsl:value-of select="$groupLetter_"/></xsl:message> + <xsl:message>The color is <xsl:value-of select="$glb_bg_col_"/></xsl:message> + <xsl:variable name="glb_bg_col_"> + <xsl:choose> + <xsl:when test="(@GROUP mod 2) = 1"> + <xsl:value-of select="$DS_COL_ASH"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> +--> + + <xsl:variable name="glb_bg_col_"> + <xsl:call-template name="Group2Color"> + <xsl:with-param name="group" select="@GROUP"/> + </xsl:call-template> + </xsl:variable> + + <TR></TR> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$glb_bg_col_}"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INDEX"/></SPAN><SPAN style="color:{$DS_COL_BLACK}; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"><xsl:value-of select="@GROUP"/></SPAN> + </TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@NAME"/></SPAN></TD> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@DIR"/></SPAN></TD> + <xsl:if test="@MSB and @LSB"> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@LSB"/>:<xsl:value-of select="@MSB"/></SPAN></TD> + </xsl:if> + <xsl:if test="not(@MSB and @LSB)"> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> + </xsl:if> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@SIGNAME"/></SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$glb_bg_col_}"> + <xsl:if test="@SIGIS='CLK'"><SPAN style="color:{$DS_COL_ATTR_CLK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> CLK </SPAN></xsl:if> + <xsl:if test="@SIGIS='RST'"><SPAN style="color:{$DS_COL_ATTR_RST}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> RESET </SPAN></xsl:if> + <xsl:if test="@SIGIS='INTERRUPT'"><SPAN style="color:{$DS_COL_ATTR_INT}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> INTR </SPAN></xsl:if> + <xsl:if test="@IOB_STATE='BUF'"><SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> BUF </SPAN></xsl:if> + <xsl:if test="@IOB_STATE='REG'"><SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> REG </SPAN></xsl:if> + </TD> + </xsl:for-each> + + </TABLE> + </TD> + </xsl:if> + + <xsl:if test="$gpin_CNT_ > 16"> + + <TR></TR> + + <TD COLSPAN="3" WIDTH="49%"> + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="100%" COLS="9" cellspacing="1" cellpadding="0" border="0"> + <TD COLSPAN="1" width="5" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">#</SPAN></TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TD> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">DIR</SPAN></TD> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">[LSB:MSB]</SPAN></TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIG</SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">ATTRIBUTES</SPAN></TD> + + <xsl:for-each select="EXTERNALPORTS/PORT"> + <xsl:sort data-type="number" select="@INDEX" order = "ascending"/> + + <xsl:if test="position() <= $num_left_"> + + <xsl:variable name="glb_bg_col_"> + <xsl:call-template name="Group2Color"> + <xsl:with-param name="group" select="@GROUP"/> + </xsl:call-template> + </xsl:variable> +<!-- + <xsl:message>NAME: <xsl:value-of select="@NAME"/></xsl:message> + <xsl:message>SIGIS: <xsl:value-of select="@SIGIS"/></xsl:message> +--> + + <TR></TR> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$glb_bg_col_}"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INDEX"/></SPAN><SPAN style="color:{$DS_COL_BLACK}; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"><xsl:value-of select="@GROUP"/></SPAN> + </TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@NAME"/></SPAN></TD> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@DIR"/></SPAN></TD> + <xsl:if test="@MSB and @LSB"> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@LSB"/>:<xsl:value-of select="@MSB"/></SPAN></TD> + </xsl:if> + <xsl:if test="not(@MSB and @LSB)"> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> + </xsl:if> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@SIGNAME"/></SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$glb_bg_col_}"> + <xsl:if test="@SIGIS='CLK'"><SPAN style="color:{$DS_COL_GREEN}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> CLK </SPAN></xsl:if> + <xsl:if test="@SIGIS='RST'"><SPAN style="color:{$DS_COL_ATTR_RST}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> RESET </SPAN></xsl:if> + <xsl:if test="@SIGIS='INTERRUPT'"><SPAN style="color:{$DS_COL_ATTR_INT}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> INTR </SPAN></xsl:if> + <xsl:if test="@IOB_STATE='BUF'"><SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> BUF </SPAN></xsl:if> + <xsl:if test="@IOB_STATE='REG'"><SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> REG </SPAN></xsl:if> + </TD> + </xsl:if> + </xsl:for-each> + + + </TABLE> + </TD> + + <TD COLSPAN="1" WIDTH="2%" BGCOLOR="{$DS_COL_GREY}"> + <SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> </SPAN> + </TD> + + <TD COLSPAN="3" WIDTH="49%"> + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="100%" COLS="9" cellspacing="1" cellpadding="0" border="0"> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">#</SPAN></TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TD> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">DIR</SPAN></TD> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">[LSB:MSB]</SPAN></TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIG</SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">ATTRIBUTES</SPAN></TD> + + <xsl:for-each select="EXTERNALPORTS/PORT"> + <xsl:sort data-type="number" select="@INDEX" order = "ascending"/> + + <xsl:if test="position() > $num_left_"> +<!-- + <xsl:variable name="glb_bg_col_"> + <xsl:choose> + <xsl:when test="(@GROUP mod 2) = 1"> + <xsl:value-of select="$DS_COL_ASH"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> +--> + + <xsl:variable name="glb_bg_col_"> + <xsl:call-template name="Group2Color"> + <xsl:with-param name="group" select="@GROUP"/> + </xsl:call-template> + </xsl:variable> + + <TR></TR> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$glb_bg_col_}"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INDEX"/></SPAN><SPAN style="color:{$DS_COL_BLACK}; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"><xsl:value-of select="@GROUP"/></SPAN> + </TD> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@NAME"/></SPAN></TD> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@DIR"/></SPAN></TD> + + <xsl:if test="@MSB and @LSB"> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@LSB"/>:<xsl:value-of select="@MSB"/></SPAN></TD> + </xsl:if> + <xsl:if test="not(@MSB and @LSB)"> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> + </xsl:if> + <TD COLSPAN="2" width="30%" align="left" bgcolor="{$glb_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@SIGNAME"/></SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$glb_bg_col_}"> + <xsl:if test="@SIGIS='CLK'"><SPAN style="color:{$DS_COL_GREEN}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> CLK </SPAN></xsl:if> + <xsl:if test="@SIGIS='RST'"><SPAN style="color:{$DS_COL_ATTR_RST}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> RESET </SPAN></xsl:if> + <xsl:if test="@SIGIS='INTERRUPT'"><SPAN style="color:{$DS_COL_ATTR_INT}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> INTR </SPAN></xsl:if> + <xsl:if test="@IOB_STATE='BUF'"><SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> BUF </SPAN></xsl:if> + <xsl:if test="@IOB_STATE='REG'"><SPAN style="color:{$DS_COL_ATTR_BUF}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> REG </SPAN></xsl:if> + </TD> + </xsl:if> + </xsl:for-each> + + <xsl:if test="$left_extra_ > 0"> + <TR></TR> + <TD COLSPAN="9" WIDTH="100%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> </SPAN></TD> + </xsl:if> + + </TABLE> + + </TD> + + </xsl:if> + + </TABLE> + +</xsl:template> + +<xsl:template name="Group2Color"> + + <xsl:param name="group" select="'A'"/> + + <xsl:variable name="letter"> + <xsl:value-of select="substring($group,(string-length($group) -string-length($group)) + 1)"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$group = 'GLB'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + + <xsl:when test="$letter = 'A'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'C'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'E'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'G'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'I'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'K'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'M'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'O'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'Q'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'S'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'U'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'W'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + <xsl:when test="$letter = 'Y'"><xsl:value-of select="$DS_COL_ASH"/></xsl:when> + + <xsl:when test="$letter = 'B'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'D'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'F'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'H'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'J'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'L'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'N'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'P'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'R'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'T'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'V'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'X'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + <xsl:when test="$letter = 'Z'"><xsl:value-of select="$DS_COL_WHITE"/></xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + +<xsl:template name="Layout_TimingInfo"> + + <xsl:variable name="mtiming_CNT_" select="count(MODULES/MODULE/TIMING)"/> + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="{ceiling($DS_WIDTH div 2)}" COLS="5" cellspacing="1" cellpadding="1" border="1"> + <TD COLSPAN="5" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">Post Synthesis Clock Limits</SPAN></TD> + <TR></TR> + <xsl:if test="$mtiming_CNT_ < 1"> + <TD COLSPAN="5" width="100%" align="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + No clocks could be identified in the design. Run platgen to generate synthesis information. + </SPAN> + </TD> + </xsl:if> + <xsl:if test="$mtiming_CNT_ > 0"> + <TD COLSPAN="5" width="100%" align="left" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + These are the post synthesis clock frequencies. The critical frequencies are marked with + </SPAN> + <SPAN style="color:{$DS_COL_GREEN}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + green. + </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_RED}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + The values reported here are post synthesis estimates calculated for each individual module. These values will change after place and route is performed on the entire system. + </SPAN> + </TD> + <TR></TR> + <TD COLSPAN="2" width="40%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">MODULE</SPAN></TD> + <TD COLSPAN="2" width="40%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">CLK Port</SPAN></TD> + <TD COLSPAN="1" width="20%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">MAX FREQ</SPAN></TD> + + <xsl:for-each select="MODULES/MODULE/TIMING"> + <xsl:sort data-type="number" select="@MAXFREQ" order="ascending"/> + <xsl:variable name="maxFreq_" select="@MAXFREQ"/> + <xsl:variable name="freqUnit_" select="@FREQUNITS"/> + <xsl:variable name="freqCol_"> + <xsl:if test="position() = 1"> + <xsl:value-of select="$DS_COL_GREEN"/> + </xsl:if> + <xsl:if test="not(position() = 1)"> + <xsl:value-of select="$DS_COL_BLACK"/> + </xsl:if> + </xsl:variable> + + <xsl:for-each select="TIMECLK"> + <TR></TR> + + <TD COLSPAN="2" width="40%" align="left" bgcolor="{$DS_COL_WHITE}"> + <A HREF="#_{../../@INSTANCE}" style="text-decoration:none"> + <SPAN style="color:{$DS_COL_XPRP}; font: italic 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="../../@INSTANCE"/></SPAN> + </A> + </TD> + + <TD COLSPAN="2" width="40%" align="left" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="@SIGNAME"/> + </SPAN> + </TD> + + <TD COLSPAN="1" width="20%" align="left" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$freqCol_}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="$maxFreq_"/><xsl:value-of select="$freqUnit_"/> + </SPAN> + </TD> + + </xsl:for-each> + </xsl:for-each> + </xsl:if> + + </TABLE> +</xsl:template> + +<!-- ============================== END GLOBAL PINOUT ==================================== --> + +<xsl:template name="Layout_NavigateHeader"> + <xsl:param name="header_name" select="HEADER"/> + <BR></BR> + <BR></BR> + <BR></BR> + <TABLE BGCOLOR="{$DS_COL_XPRP}" WIDTH="{$DS_WIDTH}" COLS="3" cellspacing="0" cellpadding="0" border="0"> + <TH COLSPAN="1" width="90%" align="left"> <SPAN style="color:{$DS_COL_WHITE}; font: bold 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$header_name"/></SPAN></TH> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <TH COLSPAN="1" width="10%" align="middle"><A HREF="#_TOC" style="text-decoration:none"><SPAN style="color:{$DS_COL_LGRY}; font: bold 14px Verdana Arial,Helvetica,sans-serif">TOC</SPAN></A></TH> + </xsl:if> + <xsl:if test="$DS_TYPE='FRAMES'"> + <TH COLSPAN="1" width="10%" align="middle"><A HREF="#_Overview" style="text-decoration:none"><SPAN style="color:{$DS_COL_LGRY}; font: bold 14px Verdana Arial,Helvetica,sans-serif">TOP</SPAN></A></TH> + </xsl:if> + </TABLE> +</xsl:template> + + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLIPSection.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLIPSection.xsl new file mode 100644 index 00000000..4e7beaa5 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLIPSection.xsl @@ -0,0 +1,611 @@ +<?xml version="1.0" standalone="no"?> +<xsl:stylesheet version="1.0" + 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="html"/> + +<!-- +<xsl:param name="DS_COL_OPB" select="'#339900'"/> +<xsl:param name="DS_COL_WHITE" select="'#FFFFFF'"/> +<xsl:param name="DS_COL_INFO" select="'#2233FF'"/> +<xsl:param name="DS_COL_BLACK" select="'#000000'"/> +<xsl:param name="DS_COL_GREY" select="'#CCCCCC'"/> +<xsl:param name="DS_COL_XPRP" select="'#810017'"/> +<xsl:param name="DS_COL_DOCLNK" select="'#FF9900'"/> +--> + +<!-- ======================= MAIN PERIPHERAL SECTION =============================== --> +<xsl:template name="Layout_IPSection"> + +<TABLE BGCOLOR="{$DS_COL_WHITE}" WIDTH="{$DS_WIDTH}" COLS="4" cellspacing="0" cellpadding="0" border="0"> + + <TD COLSPAN="4" width="5%" align="LEFT" valign="BOTTOM"> + <A name="_{@INSTANCE}"/> + <xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if> + <SPAN style="color:{$DS_COL_XPRP}; font: bold italic 14px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INSTANCE"/></SPAN> + <xsl:if test="DESCRIPTION[(@TYPE = 'SHORT')]"> + <SPAN style="color:{$DS_COL_XPRP}; font: normal italic 12px Verdana,Arial,Helvetica,sans-serif"> +   <xsl:value-of select="DESCRIPTION[(@TYPE = 'SHORT')]"/> + </SPAN> + </xsl:if> + <BR></BR> + <xsl:if test="DESCRIPTION[(@TYPE = 'LONG')]"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal italic 12px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="DESCRIPTION[(@TYPE = 'LONG')]" disable-output-escaping="yes"/> + </SPAN> + </xsl:if> + <BR></BR> + <BR></BR> + <BR></BR> + </TD> + + <TR></TR> + + <!-- Layout the Module information table--> + <TD COLSPAN="2" width="40%" align="LEFT" valign="TOP"> + <IMG SRC="imgs/{@INSTANCE}.jpg" alt="{@INSTANCE} IP Image" border="0" vspace="0" hspace="0"/> + </TD> + <TD COLSPAN="2" width="60%" align="MIDDLE" valign="TOP"> + <xsl:call-template name="Peri_PortListTable"/> + <BR></BR> + <BR></BR> + </TD> + + <TR></TR> + + <TD COLSPAN="4" width="100%" align="LEFT" valign="BOTTOM"> + <xsl:call-template name="Peri_InfoTable"/> + </TD> + +<!-- + <TD COLSPAN="1" width="5%" align="LEFT" valign="BOTTOM"> + <SPAN style="color:{$DS_COL_XPRP}; font: bold normal 16px Verdana,Arial,Helvetica,sans-serif">⌊</SPAN> + </TD> + <TD COLSPAN="2" width="90%" align="MIDDLE" valign="BOTTOM"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 12px Verdana,Arial,Helvetica,sans-serif"> </SPAN> + </TD> + <TD COLSPAN="1" width="5%" align="RIGHT" valign="BOTTOM"> + <SPAN style="color:{$DS_COL_XPRP}; font: bold normal 16px Verdana,Arial,Helvetica,sans-serif">⌋</SPAN> + </TD> +--> +</TABLE> + +<BR></BR> +<BR></BR> + +</xsl:template> + +<!-- ======================= PERIHERAL TABLE PARTS =============================== --> +<!-- Layout the Module's Information table --> +<xsl:template name="Peri_InfoTable"> + + <xsl:variable name="mhsParamCNT_" select="count(PARAMETER)"/> + + <xsl:variable name="table_is_split_"> + <xsl:if test="$mhsParamCNT_ > 10">1</xsl:if> + <xsl:if test="not($mhsParamCNT_ > 10)">0</xsl:if> + </xsl:variable> + + <xsl:variable name="table_width_"> + <xsl:if test="$mhsParamCNT_ > 10"><xsl:value-of select="$DS_WIDTH"/></xsl:if> + <xsl:if test="$mhsParamCNT_ <= 10"><xsl:value-of select="ceiling($DS_WIDTH div 2)"/></xsl:if> + </xsl:variable> + + + <xsl:variable name="left_extra_"> + <xsl:if test="($mhsParamCNT_ mod 2) = 1">1</xsl:if> + <xsl:if test="not(($mhsParamCNT_ mod 2) = 1)">0</xsl:if> + </xsl:variable> + + <xsl:variable name="num_left_" select="floor($mhsParamCNT_ div 2) + $left_extra_"/> + <xsl:variable name="num_rhgt_" select="floor($mhsParamCNT_ div 2)"/> + + <xsl:variable name="mdr_main_col_"> + <xsl:if test="$mhsParamCNT_ > 10">4</xsl:if> + <xsl:if test="$mhsParamCNT_ <= 10">2</xsl:if> + </xsl:variable> + + <xsl:variable name="mdr_othr_col_"> + <xsl:if test="$mhsParamCNT_ > 10">2</xsl:if> + <xsl:if test="$mhsParamCNT_ <= 10">1</xsl:if> + </xsl:variable> + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="{$table_width_}" COLS="5" cellspacing="1" cellpadding="1" border="1"> + <TD COLSPAN="5" WIDTH="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">General</SPAN></TD> + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">IP Core</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_WHITE}"> + <xsl:if test="@DOC_IP"> + <SPAN style="color:{$DS_COL_XPRP}; font: bold italic 10px Verdana,Arial,Helvetica,sans-serif"> + <A HREF="{@DOC_IP}" style="text-decoration:none; color:{$DS_COL_XPRP}"><xsl:value-of select="@MODTYPE"/></A> + </SPAN> + </xsl:if> + <xsl:if test="not(@DOC_IP)"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="@MODTYPE"/> + </SPAN> + </xsl:if> + </TD> + + <TR></TR> + + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Version</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@HWVERSION"/></SPAN></TD> + + <xsl:if test="@DOC_DRIVER"> + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Driver</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_XPRP}; font: bold italic 10px Verdana,Arial,Helvetica,sans-serif"> + <A HREF="{@DOC_DRIVER}" style="text-decoration:none; color:{$DS_COL_XPRP}">API</A> + </SPAN> + </TD> + </xsl:if> + + <TR></TR> + + <xsl:if test="LICENSEINFO"> + <TD COLSPAN="5" WIDTH="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">License</SPAN></TD> + + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">TYPE</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="LICENSEINFO/@TYPE"/></SPAN> + </TD> +<!-- + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">CURRENT STATUS</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="LICENSEINFO/@STATE"/></SPAN> + </TD> +--> + <xsl:if test="LICENSEINFO/@EXPIRESON"> + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">EXPIRES ON</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="LICENSEINFO/@EXPIRESON"/></SPAN> + </TD> + </xsl:if> + </xsl:if> + + <xsl:if test="$mhsParamCNT_ > 0"> + <TR></TR> + <TD COLSPAN="5" WIDTH="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">Parameters</SPAN></TD> + <TR></TR> + <TD COLSPAN="5" width="100%" align="left" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + These are parameters set for this module. + <xsl:if test="@DOC_IP"> + Refer to the IP <A HREF="{@DOC_IP}" style="text-decoration:none; color:{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_XPRP}; font: bold italic 9px Verdana,Arial,Helvetica,sans-serif"> documentation </SPAN></A>for complete information about module parameters. + </xsl:if> + </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + Parameters marked with + </SPAN> + <SPAN style="color:#FFBB00; font: bold 9px Verdana,Arial,Helvetica,sans-serif">yellow</SPAN> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + indicate parameters set by the user. + </SPAN> + <BR></BR> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + Parameters marked with + </SPAN> + <SPAN style="color:{$DS_COL_MODSYSNW}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">blue</SPAN> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + indicate parameters set by the system. + </SPAN> + </TD> + + <xsl:if test="$mhsParamCNT_ <= 10"> + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Name</SPAN></TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Value</SPAN></TD> + + <xsl:for-each select="PARAMETER"> + <xsl:sort select="@INDEX" data-type="number"/> + <xsl:variable name="name_bg_col_"> + <xsl:choose> + + <xsl:when test="@CHANGEDBY='USER'"> + <xsl:value-of select="$DS_COL_MODUSR"/> + </xsl:when> + + <xsl:when test="@CHANGEDBY='SYSTEM'"> + <xsl:value-of select="$DS_COL_MODSYS"/> + </xsl:when> + + <xsl:when test="((position() - 1) mod 2) = 0"> + <xsl:value-of select="$DS_COL_ASH1"/> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="value_bg_col_"> + <xsl:choose> + + <xsl:when test="@CHANGEDBY='USER'"> + <xsl:value-of select="$DS_COL_MODUSR"/> + </xsl:when> + + <xsl:when test="@CHANGEDBY='SYSTEM'"> + <xsl:value-of select="$DS_COL_MODSYS"/> + </xsl:when> + + <xsl:when test="((position() - 1) mod 2) = 0"> + <xsl:value-of select="$DS_COL_ASH1"/> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + + </xsl:choose> + </xsl:variable> + + <TR></TR> + <TD COLSPAN="2" WIDTH="40%" align="left" bgcolor="{$name_bg_col_}"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="@NAME"/> + </SPAN> + <xsl:if test="DESCRIPTION"> + <BR/> + <SPAN style="color:{$DS_COL_BLACK}; font: bold italic 9px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="DESCRIPTION"/> + </SPAN> + </xsl:if> + </TD> + <TD COLSPAN="3" WIDTH="60%" align="middle" bgcolor="{$value_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@VALUE"/></SPAN></TD> + </xsl:for-each> + </xsl:if> + + <xsl:if test="$mhsParamCNT_ > 10"> + <TR></TR> + <TD COLSPAN="5" WIDTH="100%"> + <TABLE BGCOLOR="{$DS_COL_GREY}" WIDTH="100%" COLS="5" cellspacing="0" cellpadding="0" border="0"> + + <TD COLSPAN="2" WIDTH="49%"> + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="100%" COLS="2" cellspacing="1" cellpadding="0" border="0"> + <TD COLSPAN="1" WIDTH="50%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Name</SPAN></TD> + <TD COLSPAN="1" WIDTH="50%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Value</SPAN></TD> + + <xsl:for-each select="PARAMETER"> + <xsl:sort select="@INDEX" data-type="number"/> + <xsl:if test="position() <= $num_left_"> + + <xsl:variable name="name_bg_col_"> + <xsl:choose> + <xsl:when test="@CHANGEDBY='USER'"> + <xsl:value-of select="$DS_COL_MODUSR"/> + </xsl:when> + + <xsl:when test="@CHANGEDBY='SYSTEM'"> + <xsl:value-of select="$DS_COL_MODSYS"/> + </xsl:when> + + <xsl:when test="((position() - 1) mod 2) = 0"> + <xsl:value-of select="$DS_COL_ASH1"/> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="value_bg_col_"> + <xsl:choose> + <xsl:when test="@CHANGEDBY='USER'"> + <xsl:value-of select="$DS_COL_MODUSR"/> + </xsl:when> + + <xsl:when test="@CHANGEDBY='SYSTEM'"> + <xsl:value-of select="$DS_COL_MODSYS"/> + </xsl:when> + + <xsl:when test="((position() - 1) mod 2) = 0"> + <xsl:value-of select="$DS_COL_ASH1"/> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <TR></TR> + <TD COLSPAN="1" WIDTH="50%" align="left" bgcolor="{$name_bg_col_}"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="@NAME"/> + </SPAN> + <xsl:if test="DESCRIPTION"> + <BR/> + <SPAN style="color:{$DS_COL_BLACK}; font: bold italic 9px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="DESCRIPTION"/> + </SPAN> + </xsl:if> + </TD> + <TD COLSPAN="1" WIDTH="50%" align="middle" bgcolor="{$value_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@VALUE"/></SPAN></TD> + </xsl:if> + </xsl:for-each> + </TABLE> + </TD> + + <TD COLSPAN="1" WIDTH="2%"> + <TABLE BGCOLOR="{$DS_COL_GREY}" WIDTH="100%" COLS="1" cellspacing="0" cellpadding="0" border="0"> + <TD COLSPAN="1" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_XPRP}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> </SPAN></TD> + </TABLE> + </TD> + + <TD COLSPAN="2" WIDTH="49%"> + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="100%" COLS="2" cellspacing="1" cellpadding="0" border="0"> + <TD COLSPAN="1" WIDTH="50%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Name</SPAN></TD> + <TD COLSPAN="1" WIDTH="50%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Value</SPAN></TD> + <xsl:for-each select="PARAMETER"> + <xsl:sort select="@INDEX" data-type="number"/> + <xsl:if test="position() > $num_left_"> + + <xsl:variable name="name_bg_col_"> + <xsl:choose> + <xsl:when test="@CHANGEDBY='USER'"> + <xsl:value-of select="$DS_COL_MODUSR"/> + </xsl:when> + + <xsl:when test="@CHANGEDBY='SYSTEM'"> + <xsl:value-of select="$DS_COL_MODSYS"/> + </xsl:when> + + <xsl:when test="((position() - $num_left_ - 1) mod 2) = 0"> + <xsl:value-of select="$DS_COL_ASH1"/> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="value_bg_col_"> + <xsl:choose> + + <xsl:when test="@CHANGEDBY='USER'"> + <xsl:value-of select="$DS_COL_MODUSR"/> + </xsl:when> + + <xsl:when test="@CHANGEDBY='SYSTEM'"> + <xsl:value-of select="$DS_COL_MODSYS"/> + </xsl:when> + + <xsl:when test="((position() - $num_left_ - 1) mod 2) = 0"> + <xsl:value-of select="$DS_COL_ASH1"/> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <TR></TR> + <TD COLSPAN="1" WIDTH="50%" align="left" bgcolor="{$name_bg_col_}"> + <SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="@NAME"/> + </SPAN> + <xsl:if test="DESCRIPTION"> + <BR/> + <SPAN style="color:{$DS_COL_BLACK}; font: bold italic 9px Verdana,Arial,Helvetica,sans-serif"> + <xsl:value-of select="DESCRIPTION"/> + </SPAN> + </xsl:if> + </TD> + <TD COLSPAN="1" WIDTH="50%" align="middle" bgcolor="{$value_bg_col_}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@VALUE"/></SPAN></TD> + + </xsl:if> + </xsl:for-each> + + <xsl:if test="$left_extra_ > 0"> + <TR></TR> + <TD COLSPAN="2" WIDTH="100%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> </SPAN></TD> + </xsl:if> + + </TABLE> + </TD> + + </TABLE> + </TD> + </xsl:if> + </xsl:if> + </TABLE> +<!-- + <BR></BR> +--> + <xsl:if test="(@MODCLASS = 'PROCESSOR') and MEMORYMAP"> +<!-- + <xsl:message>Found a memory map</xsl:message> +--> + <xsl:call-template name="Layout_MemoryMap"> + <xsl:with-param name="table_width" select="$table_width_"/> + </xsl:call-template> + </xsl:if> +<!-- + <BR></BR> +--> + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="{$table_width_}" COLS="5" cellspacing="1" cellpadding="1" border="0"> + <TD width="100%" COLSPAN="5" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">Post Synthesis Device Utilization</SPAN></TD> + <xsl:choose> + <xsl:when test="not(RESOURCES)"> + <TR></TR> + <TD width="100%" COLSPAN="5" align="middle" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + Device utilization information is not available for this IP. Run platgen to generate synthesis information. + </SPAN> + </TD> + </xsl:when> + <xsl:otherwise> + <TR></TR> + <TD COLSPAN="2" width="55%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Resource Type</SPAN></TD> + <TD COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Used</SPAN></TD> + <TD COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Available</SPAN></TD> + <TD COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Percent</SPAN></TD> + + <xsl:for-each select="RESOURCES/RESOURCE"> + <TR></TR> + <TD COLSPAN="2" width="55%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@TYPE"/></SPAN></TD> + <TD COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@USED"/></SPAN></TD> + <TD COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@TOTAL"/></SPAN></TD> + <TD COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@PERCENT"/></SPAN></TD> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> +<!-- + <BR></BR> + <TD COLSPAN="5" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 12px Verdana,Arial,Helvetica,sans-serif"></SPAN></TD> +--> + </TABLE> + +</xsl:template> + +<!-- Layout the Module's Port list table --> +<xsl:template name="Peri_PortListTable"> + + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="{ceiling($DS_WIDTH div 2)}" COLS="7" cellspacing="1" cellpadding="1" border="0"> + <TH COLSPAN="7" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">PORT LIST</SPAN></TH> + <TR></TR> + <TH COLSPAN="7" width="100%" align="left" bgcolor="{$DS_COL_WHITE}"> + <SPAN style="color:{$DS_COL_INFO}; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + The ports listed here are only those connected in the MHS file. + <xsl:if test="@DOC_IP"> + Refer to the IP <A HREF="{@DOC_IP}" style="text-decoration:none; color:{$DS_COL_XPRP}"> <SPAN style="color:{$DS_COL_XPRP}; font: bold italic 9px Verdana,Arial,Helvetica,sans-serif"> documentation </SPAN> </A>for complete information about module ports. + </xsl:if> + </SPAN> + </TH> + <TR></TR> + <TH COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">#</SPAN></TH> + <TH COLSPAN="2" width="25%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TH> + <TH COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">DIR</SPAN></TH> + <TH COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">[LSB:MSB]</SPAN></TH> + <TH COLSPAN="2" width="50%" align="left" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIGNAL</SPAN></TH> + <xsl:for-each select="PORT[(not(@SIGNAME = '__NOC__') and not(@SIGNAME = '__DEF__') and (@INMHS))]"> + <xsl:sort data-type="number" select="@INDEX" order="ascending"/> + <TR></TR> + <TD COLSPAN="1" width="5%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INDEX"/></SPAN></TD> + <TD COLSPAN="2" width="25%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@NAME"/></SPAN></TD> + <TD COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@DIR"/></SPAN></TD> + + <xsl:if test="@MSB and @LSB"> + <TD COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@LSB"/>:<xsl:value-of select="@MSB"/></SPAN></TD> + </xsl:if> + <xsl:if test="not(@MSB and @LSB)"> + <TD COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> + </xsl:if> + + <TD COLSPAN="2" width="50%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@SIGNAME"/></SPAN></TD> + </xsl:for-each> + + <xsl:if test="BUSINTERFACE"> + <xsl:variable name="instance_"><xsl:value-of select="@INSTANCE"/></xsl:variable> + <TR></TR> + <TH COLSPAN="7" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"> + <SPAN style="color:{$DS_COL_WHITE}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">Bus Interfaces</SPAN> + </TH> + <TR></TR> + + <TH COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">MASTERSHIP</SPAN></TH> + <TH COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TH> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">STD</SPAN></TH> + <TH COLSPAN="3" width="25%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">BUS</SPAN></TH> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">P2P</SPAN></TH> + <xsl:for-each select="BUSINTERFACE[(not(@BUSNAME = '__NOC__') and not(@BUSNAME = '__DEF__'))]"> + <xsl:sort select="@BIFRANK"/> + + <xsl:variable name="busname_"><xsl:value-of select="@BUSNAME"/></xsl:variable> + + <xsl:variable name="p2pname_"> + <xsl:choose> + <xsl:when test="(@BUSSTD and not((@BUSSTD='PLB') or (@BUSSTD='OPB')) or (@BIFRANK='TRANSPARENT'))"> + <xsl:value-of select="../../MODULE[not(@INSTANCE = $instance_) and BUSINTERFACE[(@BUSNAME = $busname_)]]/@INSTANCE"/> + </xsl:when> + <xsl:when test="not(@BUSSTD) or (@BUSSTD='OPB') or (@BUSSTD='PLB') or (@BIFRANK='TRANSPARENT')">NA</xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="bus_std_"> + <xsl:if test="@BUSSTD"> + <xsl:value-of select="@BUSSTD"/> + </xsl:if> + <xsl:if test="not(@BUSSTD)">NA</xsl:if> + </xsl:variable> + + + <TR></TR> + <TH COLSPAN="1" width="15%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@BIFRANK"/></SPAN></TH> + <TH COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@NAME"/></SPAN></TH> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$bus_std_"/></SPAN></TH> + <xsl:if test="$bus_std_ = 'NA'"> + <TH COLSPAN="3" width="25%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@BUSNAME"/></SPAN></TH> + </xsl:if> + <xsl:if test="not($bus_std_ = 'NA')"> + <TH COLSPAN="3" width="25%" align="middle" bgcolor="{$DS_COL_WHITE}"><A HREF="#_{@BUSNAME}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@BUSNAME"/></SPAN></A></TH> + </xsl:if> + <xsl:if test="$p2pname_ = 'NA'"> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$p2pname_"/></SPAN></TH> + </xsl:if> + <xsl:if test="not($p2pname_ = 'NA')"> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_WHITE}"><A HREF="#_{$p2pname_}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$p2pname_"/></SPAN></A></TH> + </xsl:if> + </xsl:for-each> + </xsl:if> + + <xsl:if test="@MODCLASS='BUS'"> + <xsl:variable name="instance_"><xsl:value-of select="@INSTANCE"/></xsl:variable> + <TR></TR> + <TH COLSPAN="7" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"><SPAN style="color:{$DS_COL_WHITE}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">Bus Connections</SPAN></TH> + <TR></TR> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">TYPE</SPAN></TH> + <TH COLSPAN="5" width="50%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TH> + <TH COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">BIF</SPAN></TH> + <xsl:for-each select="../MODULE/BUSINTERFACE[(@BUSNAME = $instance_)]"> + <xsl:sort select="@BIFRANK"/> + <xsl:variable name="buscName_"><xsl:value-of select="../@INSTANCE"/></xsl:variable> + <TR></TR> + <TD COLSPAN="1" width="25%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@BIFRANK"/></SPAN></TD> + <TD COLSPAN="5" width="50%" align="middle" bgcolor="{$DS_COL_WHITE}"><A HREF="#_{$buscName_}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$buscName_"/></SPAN></A></TD> + <TD COLSPAN="1" width="25%" align="left" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@NAME"/></SPAN></TD> + </xsl:for-each> + </xsl:if> + + <xsl:if test="INTERRUPTSRCS"> + <TR></TR> + <TH COLSPAN="7" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"> + <SPAN style="color:{$DS_COL_WHITE}; font: bold 9px Verdana,Arial,Helvetica,sans-serif">Interrupt Priorities</SPAN> + <TR></TR> + <TH COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">Priority</SPAN></TH> + <TH COLSPAN="3" width="55%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIG</SPAN></TH> + <TH COLSPAN="3" width="35%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">MODULE</SPAN></TH> + <TR></TR> + <xsl:for-each select="INTERRUPTSRCS/INTRSRC"> + <xsl:sort data-type="number" select="@PRIORITY" order="ascending"/> + + <xsl:variable name="intrsrc_"><xsl:value-of select="@SIGNAME"/></xsl:variable> + <xsl:variable name="intrpri_"><xsl:value-of select="@PRIORITY"/></xsl:variable> + + <xsl:for-each select="../../../MODULE[PORT[((@DIR='O') and (@SIGNAME = $intrsrc_))]]"> + <TR></TR> + <TH COLSPAN="1" width="10%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$intrpri_"/></SPAN></TH> + <TH COLSPAN="3" width="55%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="$intrsrc_"/></SPAN></TH> + <TH COLSPAN="3" width="35%" align="middle" bgcolor="{$DS_COL_WHITE}"><A HREF="#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INSTANCE"/></SPAN></A></TH> + </xsl:for-each> + </xsl:for-each> + </TH> + </xsl:if> + + </TABLE> + +</xsl:template> +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLMemoryMap.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLMemoryMap.xsl new file mode 100644 index 00000000..96e9f0cc --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLMemoryMap.xsl @@ -0,0 +1,86 @@ +<?xml version="1.0" standalone="no"?> + +<!DOCTYPE stylesheet [ + <!ENTITY HEXUPPER "ABCDEFxx0123456789"> + <!ENTITY HEXLOWER "abcdefxX0123456789"> + <!ENTITY HEXU2L " '&HEXLOWER;' , '&HEXUPPER;' "> +]> +<!-- +--> + +<xsl:stylesheet version="1.0" + 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="html"/> + +<!-- ======================= MAIN MEMORY MAP SECTION =============================== --> +<xsl:template name="Layout_MemoryMap"> +<xsl:param name="table_width" select="600"/> + +<xsl:variable name="procName" select="@INSTANCE"/> +<!-- +<BR></BR> +<BR></BR> +--> + <xsl:if test="MEMORYMAP/MEMRANGE[(@INSTANCE)]"> + + <TABLE BGCOLOR="{$DS_COL_BLACK}" WIDTH="{$table_width}" COLS="5" cellspacing="1" cellpadding="2" border="0"> + <TR></TR> + <TD COLSPAN="5" width="100%" align="middle" bgcolor="{$DS_COL_XPRP}"> + <A name="_{@INSTANCE}_MemoryMap"/> + <SPAN style="color:{$DS_COL_WHITE}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">MEMORY MAP</SPAN> + </TD> + <TR></TR> + <TD COLSPAN="5" width="100%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_INFO}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">D=DATA ADDRESSABLE    I=INSTRUCTION ADDRESSABLE</SPAN></TD> + <TR></TR> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">D</SPAN></TD> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 12px Verdana,Arial,Helvetica,sans-serif">I</SPAN></TD> + <TD COLSPAN="1" width="20%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">BASE</SPAN></TD> + <TD COLSPAN="1" width="20%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">HIGH</SPAN></TD> + <TD COLSPAN="1" width="50%" align="middle" bgcolor="{$DS_COL_GREY}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 10px Verdana,Arial,Helvetica,sans-serif">MODULE</SPAN></TD> + <TR></TR> + + <xsl:for-each select="MEMORYMAP/MEMRANGE[(@INSTANCE)]"> + <xsl:sort data-type="number" select="@BASEVALUE" order="ascending"/> + <TR></TR> + <xsl:variable name="isdata"> + <xsl:if test="@IS_DATA='TRUE'">■</xsl:if> + <xsl:if test="not(@IS_DATA='TRUE')"> </xsl:if> + </xsl:variable> + + <xsl:variable name="isinst"> + <xsl:if test="@IS_INSTRUCTION='TRUE'"> + ■ + </xsl:if> + <xsl:if test="not(@IS_INSTRUCTION='TRUE')"> +   + </xsl:if> + </xsl:variable> + + <xsl:variable name="bupper" select ="@BASE"/> + <xsl:variable name="hupper" select ="@HIGH"/> + <xsl:variable name="iname" select ="@INSTANCE"/> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana,Arial,sans-serif"><xsl:value-of select="$isdata"/></SPAN></TD> + <TD COLSPAN="1" width="5%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: bold 14px Verdana,Arial,sans-serif"><xsl:value-of select="$isinst"/></SPAN></TD> + <TD COLSPAN="1" width="20%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="translate($bupper,&HEXU2L;)"/></SPAN></TD> + <TD COLSPAN="1" width="20%" align="middle" bgcolor="{$DS_COL_WHITE}"><SPAN style="color:{$DS_COL_BLACK}; font: normal 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="translate($hupper,&HEXU2L;)"/></SPAN></TD> + <TD COLSPAN="1" width="50%" align="right" bgcolor="{$DS_COL_WHITE}"> + <A HREF="#_{$iname}" style="text-decoration:none"> + <SPAN style="color:{$DS_COL_BLACK}; vertical-align:sub; font: normal 8px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@BASENAME"/>:<xsl:value-of select="@HIGHNAME"/></SPAN><SPAN style="color:{$DS_COL_XPRP}; font: bold 12px Verdana,Arial,Helvetica,sans-serif"><xsl:value-of select="@INSTANCE"/></SPAN> + </A> + </TD> + </xsl:for-each> + </TABLE> + </xsl:if> +</xsl:template> + +<xsl:template name="FindCorrectLocation"> + <xsl:param name="ranges"/> + <xsl:param name="location"/> + <xsl:param name="instname"/> + +</xsl:template> + +</xsl:stylesheet> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLTOCTree.xsl b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLTOCTree.xsl new file mode 100644 index 00000000..862b7107 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtXdsGen_HTMLTOCTree.xsl @@ -0,0 +1,235 @@ +<?xml version="1.0" standalone="no"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:xlink="http://www.w3.org/1999/xlink"> + +<xsl:template name="Write_TOCTree"> +<HTML> +<HEAD> +<TITLE>Table of Contents</TITLE> + + <BASE target="{$DS_FRAME_MAIN}"></BASE> + + <!--specify a css for the TOC --> + <link rel="stylesheet" href="ds_Report.css" type="text/css"></link> + + <!--specify the javascript for the TOC--> + <script src="ds_Report.js" type="text/javascript"></script> +</HEAD> + + <!--Layout Table of contents --> + <BODY class="main_body"> + <xsl:call-template name="Layout_TOCTree"/> + </BODY> + +</HTML> +</xsl:template> + + +<!-- ======================= LAYOUT TABLE OF CONTENTS ====================================== --> +<xsl:template name="Layout_TOCTree"> + +<xsl:variable name="toc_col_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="$DS_COL_LGRY"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_COL_WHITE"/> + </xsl:if> +</xsl:variable> + +<xsl:variable name="toc_width_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="$DS_WIDTH"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_TOC_WIDTH"/> + </xsl:if> +</xsl:variable> + +<xsl:variable name="toc_target_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="$DS_FRAME_SELF"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_FRAME_MAIN"/> + </xsl:if> +</xsl:variable> + +<xsl:variable name="trg_html_"> + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <xsl:value-of select="''"/> + </xsl:if> + + <xsl:if test="$DS_TYPE='FRAMES'"> + <xsl:value-of select="$DS_HTML_MAIN"/> + </xsl:if> +</xsl:variable> + + +<A name="_TOC"/> +<TABLE BGCOLOR="{$toc_col_}" WIDTH="{$toc_width_}" COLS="2" cellspacing="0" cellpadding="3" border="0"> + + <xsl:if test="$DS_TYPE='NOFRAMES'"> + <TH COLSPAN="2" width="100%" align="middle"><SPAN style="color:{$DS_COL_XPRP}; font: bold 20px Arial,Helvetica,sans-serif">TABLE OF CONTENTS</SPAN></TH> + </xsl:if> + + <TR></TR> + <TD COLSPAN="1" width="40%" align="left"> + <BR></BR> + <A HREF="{$trg_html_}#_Overview" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Overview</SPAN></A> + + <BR></BR> + <A HREF="{$trg_html_}#_BlockDiagram" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Block Diagram</SPAN></A> + + <BR></BR> + <A HREF="{$trg_html_}#_ExternalPorts" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">External Ports</SPAN></A> + + <BR></BR> + <xsl:variable name="proc_CNT" select="count(MODULES/MODULE[(@MODCLASS = 'PROCESSOR')])"/> + + <xsl:if test="MODULES/MODULE[(@MODCLASS='PROCESSOR')]"> + <DIV class="trigger" onClick="showBranch('Processors'); swapBranchImg('BranchImg_Processors');"> + <xsl:if test="$proc_CNT > 1"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Processors </SPAN> + </xsl:if> + <xsl:if test="not($proc_CNT > 1)"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Processor </SPAN> + </xsl:if> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Processors"></IMG> + </DIV> + + <SPAN class="branch" id="Processors"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='PROCESSOR')]"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><BR></BR> + <xsl:if test="MEMORYMAP/MEMRANGE[(@INSTANCE)]"> + <A HREF="{$trg_html_}#_{@INSTANCE}_MemoryMap" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: italic 14px Verdana Arial,Helvetica,sans-serif">          memory map</SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:if> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[(@MODCLASS='DEBUG')]"> + <DIV class="trigger" onClick="showBranch('Debuggers'); swapBranchImg('BranchImg_Debugger');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Debuggers </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Debugger"></IMG> + </DIV> + + <SPAN class="branch" id="Debuggers"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='DEBUG')]"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + + <xsl:if test="MODULES/MODULE[(@MODCLASS='INTERRUPT_CNTLR')]"> + <DIV class="trigger" onClick="showBranch('Interrupts'); swapBranchImg('BranchImg_Interrupts');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Interrupt Controllers </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Interrupts"></IMG> + </DIV> + + <SPAN class="branch" id="Interrupts"> + <xsl:for-each select="MODULES/MODULE[(@MODCLASS='INTERRUPT_CNTLR')]"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='BUS' or @MODCLASS='BUS_ARBITER']"> + <DIV class="trigger" onClick="showBranch('Busses'); swapBranchImg('BranchImg_Busses');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Busses </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Busses"></IMG> + </DIV> + + <SPAN class="branch" id="Busses"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='BUS' or @MODCLASS='BUS_ARBITER']"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='BUS_BRIDGE']"> + <DIV class="trigger" onClick="showBranch('Bridges'); swapBranchImg('BranchImg_Bridges');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Bridges </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Bridges"></IMG> + </DIV> + <SPAN class="branch" id="Bridges"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='BUS_BRIDGE']"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='MEMORY']"> + <DIV class="trigger" onClick="showBranch('Memory'); swapBranchImg('BranchImg_Memory');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Memory </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Memory"></IMG> + </DIV> + <SPAN class="branch" id="Memory"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='MEMORY']"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='MEMORY_CNTLR']"> + <DIV class="trigger" onClick="showBranch('MemoryCntlr'); swapBranchImg('BranchImg_MemoryCntlr');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Memory Controllers </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_MemoryCntlr"></IMG> + </DIV> + <SPAN class="branch" id="MemoryCntlr"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='MEMORY_CNTLR']"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='PERIPHERAL']"> + <DIV class="trigger" onClick="showBranch('Peripheral'); swapBranchImg('BranchImg_Peripheral');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Peripherals </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_Peripheral"></IMG> + </DIV> + <SPAN class="branch" id="Peripheral"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='PERIPHERAL']"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Courier Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <xsl:if test="MODULES/MODULE[@MODCLASS='IP']"> + <DIV class="trigger" onClick="showBranch('IP'); swapBranchImg('BranchImg_IP');"> + <SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">IP </SPAN> + <IMG src="imgs/IMG_openBranch.gif" border="0" id="BranchImg_IP"></IMG> + </DIV> + <SPAN class="branch" id="IP"> + <xsl:for-each select="MODULES/MODULE[@MODCLASS='IP']"> + <xsl:sort select="@INSTANCE"/> + <A HREF="{$trg_html_}#_{@INSTANCE}" style="text-decoration:none"><SPAN style="color:{$DS_COL_XPRP}; font: italic 14px Courier Verdana Arial,Helvetica,sans-serif">   <xsl:value-of select="@INSTANCE"/></SPAN></A><xsl:if test="LICENSEINFO"><IMG SRC="imgs/IMG_LicensedCore.bmp" border="0" vspace="0" hspace="0"/></xsl:if><BR></BR> + </xsl:for-each> + </SPAN> + </xsl:if> + + <A HREF="{$trg_html_}#_TimingInfo" style="text-decoration:none"><SPAN style="color:{$DS_COL_BLACK}; font: bold 16px Verdana Arial,Helvetica,sans-serif">Timing Information</SPAN></A><BR></BR> +<!-- +--> + + </TD> + +</TABLE> +</xsl:template> + +</xsl:stylesheet> +<!-- ======================= END LAYOUT TABLE OF CONTENT TREE =================================== --> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/svg10.dtd b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/svg10.dtd new file mode 100644 index 00000000..110f5ced --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/svg10.dtd @@ -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/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/system_shapes.xml b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/system_shapes.xml new file mode 100644 index 00000000..132e36c9 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/.dswkshop/system_shapes.xml @@ -0,0 +1,1821 @@ + +<EDKSYSTEM ARCH="virtex4" EDKVERSION="10.1.01" PART="xc4vfx12ff668-10" SRC="C:/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.xmp" TIMESTAMP="Sun May 11 14:31:02 2008
"> + + <MODULES> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/cpu_ppc405_v1_10_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/ppc405_virtex4_v2_01_a/doc/ppc405_virtex4.pdf" HWVERSION="2.01.a" INSTANCE="ppc405_0" INTERRUPT_CNTLR="xps_intc_0" IPTYPE="PROCESSOR" IS_PLACED="TRUE" MHS_INDEX="0" MODCLASS="PROCESSOR" MODTYPE="ppc405_virtex4" SAV_INDEX="0"> + <DESCRIPTION TYPE="SHORT">PowerPC 405 Virtex-4</DESCRIPTION> + <DESCRIPTION TYPE="LONG">A wrapper to instantiate the PowerPC 405 Processor Block primitive</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_DPLB0_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="1" NAME="C_DPLB0_NATIVE_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="2" NAME="C_IPLB0_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="3" NAME="C_IPLB0_NATIVE_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="4" NAME="C_DPLB1_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="5" NAME="C_DPLB1_NATIVE_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="6" NAME="C_IPLB1_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="7" NAME="C_IPLB1_NATIVE_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="8" NAME="C_DPLB1_ADDR_BASE" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="9" NAME="C_DPLB1_ADDR_HIGH" VALUE="0x00000000"/> + <PARAMETER MPD_INDEX="10" NAME="C_IPLB1_ADDR_BASE" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="11" NAME="C_IPLB1_ADDR_HIGH" VALUE="0x00000000"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="12" NAME="C_FASTEST_PLB_CLOCK" VALUE="DPLB0"/> + <PARAMETER MPD_INDEX="13" NAME="C_GENERATE_PLB_TIMESPECS" VALUE="1"/> + <PARAMETER MPD_INDEX="14" NAME="C_DPLB0_P2P" VALUE="1"/> + <PARAMETER MPD_INDEX="15" NAME="C_DPLB1_P2P" VALUE="1"/> + <PARAMETER MPD_INDEX="16" NAME="C_IPLB0_P2P" VALUE="1"/> + <PARAMETER MPD_INDEX="17" NAME="C_IPLB1_P2P" VALUE="1"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="18" NAME="C_IDCR_BASEADDR" VALUE="0b0100000000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="19" NAME="C_IDCR_HIGHADDR" VALUE="0b0111111111"/> + <PARAMETER MPD_INDEX="20" NAME="C_DISABLE_OPERAND_FORWARDING" VALUE="1"/> + <PARAMETER MPD_INDEX="21" NAME="C_MMU_ENABLE" VALUE="1"/> + <PARAMETER MPD_INDEX="22" NAME="C_DETERMINISTIC_MULT" VALUE="0"/> + <PARAMETER MPD_INDEX="23" NAME="C_PLBSYNCBYPASS" VALUE="1"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="24" NAME="C_APU_CONTROL" VALUE="0b0000000000000001"/> + <PARAMETER MPD_INDEX="25" NAME="C_APU_UDI_1" VALUE="0b101000011000100110000011"/> + <PARAMETER MPD_INDEX="26" NAME="C_APU_UDI_2" VALUE="0b101000111000100110000011"/> + <PARAMETER MPD_INDEX="27" NAME="C_APU_UDI_3" VALUE="0b101001011000100111000011"/> + <PARAMETER MPD_INDEX="28" NAME="C_APU_UDI_4" VALUE="0b101001111000100111000011"/> + <PARAMETER MPD_INDEX="29" NAME="C_APU_UDI_5" VALUE="0b101010011000110000000011"/> + <PARAMETER MPD_INDEX="30" NAME="C_APU_UDI_6" VALUE="0b101010111000110000000011"/> + <PARAMETER MPD_INDEX="31" NAME="C_APU_UDI_7" VALUE="0b101011011000110001000011"/> + <PARAMETER MPD_INDEX="32" NAME="C_APU_UDI_8" VALUE="0b101011111000110001000011"/> + <PARAMETER MPD_INDEX="33" NAME="C_PVR_HIGH" VALUE="0b0000"/> + <PARAMETER MPD_INDEX="34" NAME="C_PVR_LOW" VALUE="0b0000"/> + <BUSINTERFACE BIFRANK="TARGET" BIF_X="0" BIF_Y="0" BUSNAME="jtagppc_0_0" BUSSTD="XIL" BUS_STD="XIL_JTAGPPC" MPD_INDEX="10" NAME="JTAGPPC" ORIENTED="WEST"/> + <BUSINTERFACE BIFRANK="MASTER" BIF_X="1" BIF_Y="2" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="2" NAME="IPLB0" ORIENTED="EAST"/> + <BUSINTERFACE BIFRANK="MASTER" BIF_X="0" BIF_Y="2" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="1" NAME="DPLB0" ORIENTED="WEST"/> + <BUSINTERFACE BIFRANK="TARGET" BIF_X="1" BIF_Y="1" BUSNAME="ppc_reset_bus" BUSSTD="XIL" BUS_STD="XIL_RESETPPC" MPD_INDEX="11" NAME="RESETPPC" ORIENTED="EAST"/> + <BUSINTERFACE BIFRANK="MASTER" BIF_X="1" BIF_Y="0" BUSNAME="fcb_v10_0" BUSSTD="FCB" BUS_STD="FCB" MPD_INDEX="7" NAME="MFCB" ORIENTED="EAST"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="6" NAME="CPMC405CLOCK" SIGIS="CLK" SIGNAME="proc_clk_s"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="237" NAME="EICC405EXTINPUTIRQ" SENSITIVITY="EDGE_RISING" SIGIS="INTERRUPT" SIGNAME="EICC405EXTINPUTIRQ"/> + <PORT DIR="O" MPD_INDEX="0" NAME="C405CPMCORESLEEPREQ" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="1" NAME="C405CPMMSRCE" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="2" NAME="C405CPMMSREE" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="3" NAME="C405CPMTIMERIRQ" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="4" NAME="C405CPMTIMERRESETREQ" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="5" NAME="C405XXXMACHINECHECK" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="7" NAME="CPMC405CORECLKINACTIVE" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="8" NAME="CPMC405CPUCLKEN" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="9" NAME="CPMC405JTAGCLKEN" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="10" NAME="CPMC405TIMERCLKEN" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="CPMC405TIMERTICK" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="MCBCPUCLKEN" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="13" NAME="MCBTIMEREN" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="14" NAME="MCPPCRST" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="15" NAME="CPMDCRCLK" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="16" NAME="CPMFCMCLK" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="17" NAME="C405RSTCHIPRESETREQ" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="18" NAME="C405RSTCORERESETREQ" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="19" NAME="C405RSTSYSRESETREQ" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="RSTC405RESETCHIP" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="21" NAME="RSTC405RESETCORE" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="22" NAME="RSTC405RESETSYS" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="23" NAME="APUFCMDECODED" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="24" NAME="APUFCMDECUDI" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="25" NAME="APUFCMDECUDIVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="26" NAME="APUFCMENDIAN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="APUFCMFLUSH" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="28" NAME="APUFCMINSTRUCTION" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="29" NAME="APUFCMINSTRVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="APUFCMLOADBYTEEN" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="31" NAME="APUFCMLOADDATA" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="32" NAME="APUFCMLOADDVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="33" NAME="APUFCMOPERANDVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="34" NAME="APUFCMRADATA" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="35" NAME="APUFCMRBDATA" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="36" NAME="APUFCMWRITEBACKOK" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="37" NAME="APUFCMXERCA" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="38" NAME="FCMAPUCR" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="39" NAME="FCMAPUDCDCREN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="40" NAME="FCMAPUDCDFORCEALIGN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="41" NAME="FCMAPUDCDFORCEBESTEERING" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="42" NAME="FCMAPUDCDFPUOP" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="43" NAME="FCMAPUDCDGPRWRITE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="44" NAME="FCMAPUDCDLDSTBYTE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="45" NAME="FCMAPUDCDLDSTDW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="46" NAME="FCMAPUDCDLDSTHW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="47" NAME="FCMAPUDCDLDSTQW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="48" NAME="FCMAPUDCDLDSTWD" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="49" NAME="FCMAPUDCDLOAD" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="50" NAME="FCMAPUDCDPRIVOP" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="51" NAME="FCMAPUDCDRAEN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="52" NAME="FCMAPUDCDRBEN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="53" NAME="FCMAPUDCDSTORE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="54" NAME="FCMAPUDCDTRAPBE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="55" NAME="FCMAPUDCDTRAPLE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="56" NAME="FCMAPUDCDUPDATE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="57" NAME="FCMAPUDCDXERCAEN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="58" NAME="FCMAPUDCDXEROVEN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="59" NAME="FCMAPUDECODEBUSY" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="60" NAME="FCMAPUDONE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="61" NAME="FCMAPUEXCEPTION" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="62" NAME="FCMAPUEXEBLOCKINGMCO" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="63" NAME="FCMAPUEXECRFIELD" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="64" NAME="FCMAPUEXENONBLOCKINGMCO" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="65" NAME="FCMAPUINSTRACK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="66" NAME="FCMAPULOADWAIT" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="67" NAME="FCMAPURESULT" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="68" NAME="FCMAPURESULTVALID" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="69" NAME="FCMAPUSLEEPNOTREADY" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="70" NAME="FCMAPUXERCA" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="71" NAME="FCMAPUXEROV" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="72" NAME="IPLB0_PLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="73" NAME="IPLB0_PLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="74" NAME="IPLB0_PLB_MBusy" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="75" NAME="IPLB0_PLB_MRdErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="76" NAME="IPLB0_PLB_MWrErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="77" NAME="IPLB0_PLB_MWrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="78" NAME="IPLB0_PLB_MWrDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="79" NAME="IPLB0_PLB_MAddrAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="80" NAME="IPLB0_PLB_MRdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="81" NAME="IPLB0_PLB_MRdDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="82" NAME="IPLB0_PLB_MRdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_IPLB0_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="83" NAME="IPLB0_PLB_MRearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="84" NAME="IPLB0_PLB_MSSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="85" NAME="IPLB0_PLB_MTimeout" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="86" NAME="IPLB0_PLB_MRdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="87" NAME="IPLB0_M_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="88" NAME="IPLB0_M_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_IPLB0_DWIDTH/8)-1)]"/> + <PORT DIR="O" MPD_INDEX="89" NAME="IPLB0_M_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="90" NAME="IPLB0_M_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="91" NAME="IPLB0_M_request" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="92" NAME="IPLB0_M_RNW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="93" NAME="IPLB0_M_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="94" NAME="IPLB0_M_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="95" NAME="IPLB0_M_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_IPLB0_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="96" NAME="IPLB0_M_abort" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="97" NAME="IPLB0_M_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="98" NAME="IPLB0_M_busLock" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="99" NAME="IPLB0_M_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="100" NAME="IPLB0_M_priority" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="101" NAME="IPLB0_M_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="102" NAME="IPLB0_M_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="I" MPD_INDEX="103" NAME="DPLB0_PLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="104" NAME="DPLB0_PLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="105" NAME="DPLB0_PLB_MBusy" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="106" NAME="DPLB0_PLB_MRdErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="107" NAME="DPLB0_PLB_MWrErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="108" NAME="DPLB0_PLB_MWrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="109" NAME="DPLB0_PLB_MWrDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="110" NAME="DPLB0_PLB_MAddrAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="111" NAME="DPLB0_PLB_MRdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="112" NAME="DPLB0_PLB_MRdDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="113" NAME="DPLB0_PLB_MRdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_DPLB0_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="114" NAME="DPLB0_PLB_MRearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="115" NAME="DPLB0_PLB_MSSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="116" NAME="DPLB0_PLB_MTimeout" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="117" NAME="DPLB0_PLB_MRdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="118" NAME="DPLB0_M_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="119" NAME="DPLB0_M_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_DPLB0_DWIDTH/8)-1)]"/> + <PORT DIR="O" MPD_INDEX="120" NAME="DPLB0_M_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="121" NAME="DPLB0_M_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="122" NAME="DPLB0_M_request" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="123" NAME="DPLB0_M_RNW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="124" NAME="DPLB0_M_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="125" NAME="DPLB0_M_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="126" NAME="DPLB0_M_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_DPLB0_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="127" NAME="DPLB0_M_abort" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="128" NAME="DPLB0_M_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="129" NAME="DPLB0_M_busLock" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="130" NAME="DPLB0_M_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="131" NAME="DPLB0_M_priority" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="132" NAME="DPLB0_M_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="133" NAME="DPLB0_M_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="I" MPD_INDEX="134" NAME="IPLB1_PLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="135" NAME="IPLB1_PLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="136" NAME="IPLB1_PLB_MBusy" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="137" NAME="IPLB1_PLB_MRdErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="138" NAME="IPLB1_PLB_MWrErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="139" NAME="IPLB1_PLB_MWrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="140" NAME="IPLB1_PLB_MWrDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="141" NAME="IPLB1_PLB_MAddrAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="142" NAME="IPLB1_PLB_MRdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="143" NAME="IPLB1_PLB_MRdDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="144" NAME="IPLB1_PLB_MRdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_IPLB1_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="145" NAME="IPLB1_PLB_MRearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="146" NAME="IPLB1_PLB_MSSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="147" NAME="IPLB1_PLB_MTimeout" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="148" NAME="IPLB1_PLB_MRdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="149" NAME="IPLB1_M_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="150" NAME="IPLB1_M_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_IPLB1_DWIDTH/8)-1)]"/> + <PORT DIR="O" MPD_INDEX="151" NAME="IPLB1_M_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="152" NAME="IPLB1_M_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="153" NAME="IPLB1_M_request" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="154" NAME="IPLB1_M_RNW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="155" NAME="IPLB1_M_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="156" NAME="IPLB1_M_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="157" NAME="IPLB1_M_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_IPLB1_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="158" NAME="IPLB1_M_abort" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="159" NAME="IPLB1_M_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="160" NAME="IPLB1_M_busLock" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="161" NAME="IPLB1_M_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="162" NAME="IPLB1_M_priority" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="163" NAME="IPLB1_M_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="164" NAME="IPLB1_M_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="I" MPD_INDEX="165" NAME="DPLB1_PLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="166" NAME="DPLB1_PLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="167" NAME="DPLB1_PLB_MBusy" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="168" NAME="DPLB1_PLB_MRdErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="169" NAME="DPLB1_PLB_MWrErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="170" NAME="DPLB1_PLB_MWrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="171" NAME="DPLB1_PLB_MWrDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="172" NAME="DPLB1_PLB_MAddrAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="173" NAME="DPLB1_PLB_MRdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="174" NAME="DPLB1_PLB_MRdDAck" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="175" NAME="DPLB1_PLB_MRdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_DPLB1_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="176" NAME="DPLB1_PLB_MRearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="177" NAME="DPLB1_PLB_MSSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="178" NAME="DPLB1_PLB_MTimeout" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="179" NAME="DPLB1_PLB_MRdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="180" NAME="DPLB1_M_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="181" NAME="DPLB1_M_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_DPLB1_DWIDTH/8)-1)]"/> + <PORT DIR="O" MPD_INDEX="182" NAME="DPLB1_M_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="183" NAME="DPLB1_M_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="184" NAME="DPLB1_M_request" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="185" NAME="DPLB1_M_RNW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="186" NAME="DPLB1_M_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="187" NAME="DPLB1_M_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="188" NAME="DPLB1_M_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_DPLB1_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="189" NAME="DPLB1_M_abort" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="190" NAME="DPLB1_M_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="191" NAME="DPLB1_M_busLock" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="192" NAME="DPLB1_M_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="193" NAME="DPLB1_M_priority" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="194" NAME="DPLB1_M_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="195" NAME="DPLB1_M_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="I" MPD_INDEX="196" NAME="BRAMDSOCMCLK" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="197" NAME="BRAMDSOCMRDDBUS" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="198" NAME="DSARCVALUE" SIGNAME="__DEF__" VECFORMULA="[0:7]"/> + <PORT DIR="I" MPD_INDEX="199" NAME="DSCNTLVALUE" SIGNAME="__DEF__" VECFORMULA="[0:7]"/> + <PORT DIR="O" MPD_INDEX="200" NAME="DSOCMBRAMABUS" SIGNAME="__DEF__" VECFORMULA="[8:29]"/> + <PORT DIR="O" MPD_INDEX="201" NAME="DSOCMBRAMBYTEWRITE" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="202" NAME="DSOCMBRAMEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="203" NAME="DSOCMBRAMWRDBUS" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="204" NAME="DSOCMBUSY" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="205" NAME="DSOCMRDADDRVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="206" NAME="DSOCMWRADDRVALID" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="207" NAME="DSOCMRWCOMPLETE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="208" NAME="BRAMISOCMCLK" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="209" NAME="BRAMISOCMRDDBUS" SIGNAME="__DEF__" VECFORMULA="[0:63]"/> + <PORT DIR="I" MPD_INDEX="210" NAME="BRAMISOCMDCRRDDBUS" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="211" NAME="ISARCVALUE" SIGNAME="__DEF__" VECFORMULA="[0:7]"/> + <PORT DIR="I" MPD_INDEX="212" NAME="ISCNTLVALUE" SIGNAME="__DEF__" VECFORMULA="[0:7]"/> + <PORT DIR="O" MPD_INDEX="213" NAME="ISOCMBRAMEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="214" NAME="ISOCMBRAMEVENWRITEEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="215" NAME="ISOCMBRAMODDWRITEEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="216" NAME="ISOCMBRAMRDABUS" SIGNAME="__DEF__" VECFORMULA="[8:28]"/> + <PORT DIR="O" MPD_INDEX="217" NAME="ISOCMBRAMWRABUS" SIGNAME="__DEF__" VECFORMULA="[8:28]"/> + <PORT DIR="O" MPD_INDEX="218" NAME="ISOCMBRAMWRDBUS" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="219" NAME="ISOCMDCRBRAMEVENEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="220" NAME="ISOCMDCRBRAMODDEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="221" NAME="ISOCMDCRBRAMRDSELECT" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="222" NAME="DCREMACABUS" SIGNAME="__DEF__" VECFORMULA="[8:9]"/> + <PORT DIR="O" MPD_INDEX="223" NAME="DCREMACCLK" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="224" NAME="DCREMACDBUS" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="225" NAME="DCREMACENABLER" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="226" NAME="DCREMACREAD" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="227" NAME="DCREMACWRITE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="228" NAME="EMACDCRACK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="229" NAME="EMACDCRDBUS" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="230" NAME="EXTDCRABUS" SIGNAME="__DEF__" VECFORMULA="[0:9]"/> + <PORT DIR="O" MPD_INDEX="231" NAME="EXTDCRDBUSOUT" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="232" NAME="EXTDCRREAD" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="233" NAME="EXTDCRWRITE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="234" NAME="EXTDCRACK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="235" NAME="EXTDCRDBUSIN" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="236" NAME="EICC405CRITINPUTIRQ" SENSITIVITY="EDGE_RISING" SIGIS="INTERRUPT" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="238" NAME="C405JTGCAPTUREDR" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="239" NAME="C405JTGEXTEST" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="240" NAME="C405JTGPGMOUT" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="241" NAME="C405JTGSHIFTDR" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="242" NAME="C405JTGTDO" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="243" NAME="C405JTGTDOEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="244" NAME="C405JTGUPDATEDR" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="245" NAME="MCBJTAGEN" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="246" NAME="JTGC405BNDSCANTDO" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="247" NAME="JTGC405TCK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="248" NAME="JTGC405TDI" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="249" NAME="JTGC405TMS" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="250" NAME="JTGC405TRSTNEG" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="251" NAME="C405DBGMSRWE" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="252" NAME="C405DBGSTOPACK" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="253" NAME="C405DBGWBCOMPLETE" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="254" NAME="C405DBGWBFULL" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="255" NAME="C405DBGWBIAR" SIGNAME="__NOC__" VECFORMULA="[0:29]"/> + <PORT DIR="I" MPD_INDEX="256" NAME="DBGC405DEBUGHALT" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="257" NAME="DBGC405DEBUGHALTNEG" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="258" NAME="DBGC405EXTBUSHOLDACK" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="259" NAME="DBGC405UNCONDDEBUGEVENT" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="260" NAME="C405DBGLOADDATAONAPUDBUS" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="261" NAME="C405TRCCYCLE" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="262" NAME="C405TRCEVENEXECUTIONSTATUS" SIGNAME="__NOC__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="263" NAME="C405TRCODDEXECUTIONSTATUS" SIGNAME="__NOC__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="264" NAME="C405TRCTRACESTATUS" SIGNAME="__NOC__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="265" NAME="C405TRCTRIGGEREVENTOUT" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="266" NAME="C405TRCTRIGGEREVENTTYPE" SIGNAME="__NOC__" VECFORMULA="[0:10]"/> + <PORT DIR="I" MPD_INDEX="267" NAME="TRCC405TRACEDISABLE" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="268" NAME="TRCC405TRIGGEREVENTIN" SIGNAME="__NOC__"/> + <BUSINTERFACE BIFRANK="MASTER" BUSNAME="__NOC__" BUSSTD="DCR" BUS_STD="DCR" MPD_INDEX="0" NAME="MDCR"/> + <BUSINTERFACE BIFRANK="MASTER" BUSNAME="__NOC__" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="3" NAME="DPLB1"/> + <BUSINTERFACE BIFRANK="MASTER" BUSNAME="__NOC__" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="4" NAME="IPLB1"/> + <BUSINTERFACE BIFRANK="MASTER" BUSNAME="__NOC__" BUSSTD="OCM" BUS_STD="DSOCM" IS_DATA="TRUE" MPD_INDEX="5" NAME="DSOCM"/> + <BUSINTERFACE BIFRANK="MASTER" BUSNAME="__NOC__" BUSSTD="OCM" BUS_STD="ISOCM" IS_INSTRUCTION="TRUE" MPD_INDEX="6" NAME="ISOCM"/> + <BUSINTERFACE BIFRANK="INITIATOR" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_FCM" MPD_INDEX="8" NAME="MFCM"/> + <BUSINTERFACE BIFRANK="INITIATOR" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_EMACDCR" MPD_INDEX="9" NAME="EMACDCR"/> + <MEMORYMAP> + <MEMRANGE BASE="0b0100000000" BASENAME="C_IDCR_BASEADDR" BASEVALUE="256" HIGH="0b0111111111" HIGHNAME="C_IDCR_HIGHADDR" HIGHVALUE="511" MINSIZE="16" SIZE="256" SIZEABRV="256"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="MDCR"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/generic_v1_00_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/jtagppc_cntlr_v2_01_a/doc/jtagppc_cntlr.pdf" HWVERSION="2.01.a" INSTANCE="jtagppc_0" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="1" MODCLASS="PERIPHERAL" MODTYPE="jtagppc_cntlr" SAV_INDEX="5"> + <DESCRIPTION TYPE="SHORT">PowerPC JTAG Controller</DESCRIPTION> + <DESCRIPTION TYPE="LONG">JTAGPPC wrapper allows the PowerPC to connect to the JTAG chain of the FPGA.</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_DEVICE" VALUE="X2VP4"/> + <PARAMETER MPD_INDEX="1" NAME="C_NUM_PPC_USED" VALUE="0"/> + <BUSINTERFACE BIFRANK="INITIATOR" BIF_X="0" BIF_Y="0" BUSNAME="jtagppc_0_0" BUSSTD="XIL" BUS_STD="XIL_JTAGPPC" MPD_INDEX="0" NAME="JTAGPPC0"/> + <PORT DIR="I" MPD_INDEX="0" NAME="TRSTNEG" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="HALTNEG0" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="2" NAME="DBGC405DEBUGHALT0" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="3" NAME="HALTNEG1" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="4" NAME="DBGC405DEBUGHALT1" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="5" NAME="C405JTGTDO0" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="C405JTGTDOEN0" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="7" NAME="JTGC405TCK0" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="8" NAME="JTGC405TDI0" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="9" NAME="JTGC405TMS0" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="10" NAME="JTGC405TRSTNEG0" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="C405JTGTDO1" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="C405JTGTDOEN1" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="13" NAME="JTGC405TCK1" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="14" NAME="JTGC405TDI1" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="15" NAME="JTGC405TMS1" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="16" NAME="JTGC405TRSTNEG1" SIGNAME="__DEF__"/> + <BUSINTERFACE BIFRANK="INITIATOR" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_JTAGPPC" MPD_INDEX="1" NAME="JTAGPPC1"/> + </MODULE> + <MODULE BUSINDEX="0" BUSSTD="PLBV46" BUS_STD="PLBV46" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/plb_v46_v1_02_a/doc/plb_v46.pdf" HWVERSION="1.02.a" INSTANCE="plb" IPTYPE="BUS" IS_PLACED="TRUE" MHS_INDEX="2" MODCLASS="BUS" MODTYPE="plb_v46" SAV_INDEX="2"> + <DESCRIPTION TYPE="SHORT">Processor Local Bus (PLB) 4.6</DESCRIPTION> + <DESCRIPTION TYPE="LONG">'Xilinx 64-bit Processor Local Bus (PLB) consists of a bus control unit, a watchdog timer, and separate address, write, and read data path units with a a three-cycle only arbitration feature'</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_PLBV46_NUM_MASTERS" VALUE="4"/> + <PARAMETER MPD_INDEX="1" NAME="C_PLBV46_NUM_SLAVES" VALUE="8"/> + <PARAMETER MPD_INDEX="2" NAME="C_PLBV46_MID_WIDTH" VALUE="2"/> + <PARAMETER MPD_INDEX="3" NAME="C_PLBV46_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="4" NAME="C_PLBV46_DWIDTH" VALUE="64"/> + <PARAMETER MPD_INDEX="5" NAME="C_DCR_INTFCE" VALUE="0"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" MPD_INDEX="6" NAME="C_BASEADDR" VALUE="0b1111111111"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" MPD_INDEX="7" NAME="C_HIGHADDR" VALUE="0b0000000000"/> + <PARAMETER MPD_INDEX="8" NAME="C_DCR_AWIDTH" VALUE="10"/> + <PARAMETER MPD_INDEX="9" NAME="C_DCR_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="10" NAME="C_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="11" NAME="C_IRQ_ACTIVE" VALUE="1"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="12" NAME="C_NUM_CLK_PLB2OPB_REARB" VALUE="100"/> + <PARAMETER MPD_INDEX="13" NAME="C_ADDR_PIPELINING_TYPE" VALUE="1"/> + <PARAMETER MPD_INDEX="14" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="15" NAME="C_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="16" NAME="C_ARB_TYPE" VALUE="0"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="0" NAME="PLB_Clk" SIGIS="CLK" SIGNAME="sys_clk_s"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="1" NAME="SYS_Rst" SIGIS="RST" SIGNAME="sys_bus_reset"/> + <PORT DIR="O" MPD_INDEX="2" NAME="PLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="3" NAME="SPLB_Rst" SIGIS="RST" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="O" MPD_INDEX="4" NAME="MPLB_Rst" SIGIS="RST" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="5" NAME="PLB_dcrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="6" NAME="PLB_dcrDBus" SIGNAME="__DEF__" VECFORMULA="[0:C_DCR_DWIDTH-1]"/> + <PORT DIR="I" MPD_INDEX="7" NAME="DCR_ABus" SIGNAME="__DEF__" VECFORMULA="[0:C_DCR_AWIDTH-1]"/> + <PORT DIR="I" MPD_INDEX="8" NAME="DCR_DBus" SIGNAME="__DEF__" VECFORMULA="[0:C_DCR_DWIDTH-1]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="DCR_Read" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="10" NAME="DCR_Write" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="M_ABus" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*32)-1]"/> + <PORT DIR="I" MPD_INDEX="12" NAME="M_UABus" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*32)-1]"/> + <PORT DIR="I" MPD_INDEX="13" NAME="M_BE" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*(C_PLBV46_DWIDTH/8))-1]"/> + <PORT DIR="I" MPD_INDEX="14" NAME="M_RNW" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="15" NAME="M_abort" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="16" NAME="M_busLock" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="17" NAME="M_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*16)-1]"/> + <PORT DIR="I" MPD_INDEX="18" NAME="M_lockErr" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="19" NAME="M_MSize" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*2)-1]"/> + <PORT DIR="I" MPD_INDEX="20" NAME="M_priority" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*2)-1]"/> + <PORT DIR="I" MPD_INDEX="21" NAME="M_rdBurst" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="22" NAME="M_request" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="23" NAME="M_size" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*4)-1]"/> + <PORT DIR="I" MPD_INDEX="24" NAME="M_type" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*3)-1]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="M_wrBurst" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="I" MPD_INDEX="26" NAME="M_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*C_PLBV46_DWIDTH)-1]"/> + <PORT DIR="I" MPD_INDEX="27" NAME="Sl_addrAck" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="28" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_SLAVES*C_PLBV46_NUM_MASTERS)-1]"/> + <PORT DIR="I" MPD_INDEX="29" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_SLAVES*C_PLBV46_NUM_MASTERS)-1]"/> + <PORT DIR="I" MPD_INDEX="30" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES*C_PLBV46_NUM_MASTERS - 1 ]"/> + <PORT DIR="I" MPD_INDEX="31" NAME="Sl_rdBTerm" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="32" NAME="Sl_rdComp" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="33" NAME="Sl_rdDAck" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="34" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES*C_PLBV46_DWIDTH-1]"/> + <PORT DIR="I" MPD_INDEX="35" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES*4-1]"/> + <PORT DIR="I" MPD_INDEX="36" NAME="Sl_rearbitrate" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="37" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES*2-1]"/> + <PORT DIR="I" MPD_INDEX="38" NAME="Sl_wait" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="39" NAME="Sl_wrBTerm" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="40" NAME="Sl_wrComp" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="41" NAME="Sl_wrDAck" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="I" MPD_INDEX="42" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES*C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="43" NAME="PLB_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="44" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="45" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="46" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_DWIDTH/8)-1]"/> + <PORT DIR="O" MPD_INDEX="47" NAME="PLB_MAddrAck" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="48" NAME="PLB_MTimeout" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="49" NAME="PLB_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="50" NAME="PLB_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="51" NAME="PLB_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="52" NAME="PLB_MRdBTerm" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="53" NAME="PLB_MRdDAck" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="54" NAME="PLB_MRdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*C_PLBV46_DWIDTH)-1]"/> + <PORT DIR="O" MPD_INDEX="55" NAME="PLB_MRdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*4)-1]"/> + <PORT DIR="O" MPD_INDEX="56" NAME="PLB_MRearbitrate" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="57" NAME="PLB_MWrBTerm" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="58" NAME="PLB_MWrDAck" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="59" NAME="PLB_MSSize" SIGNAME="__DEF__" VECFORMULA="[0:(C_PLBV46_NUM_MASTERS*2)-1]"/> + <PORT DIR="O" MPD_INDEX="60" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="61" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="62" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="63" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="64" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="65" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="66" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="67" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_MID_WIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="68" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="69" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="70" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="71" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="72" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="73" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="74" NAME="PLB_rdPrim" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="O" MPD_INDEX="75" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="76" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="77" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="78" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="79" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_DWIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="80" NAME="PLB_wrPrim" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_SLAVES-1]"/> + <PORT DIR="O" MPD_INDEX="81" NAME="PLB_SaddrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="82" NAME="PLB_SMRdErr" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="83" NAME="PLB_SMWrErr" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="84" NAME="PLB_SMBusy" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_NUM_MASTERS-1]"/> + <PORT DIR="O" MPD_INDEX="85" NAME="PLB_SrdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="86" NAME="PLB_SrdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="87" NAME="PLB_SrdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="88" NAME="PLB_SrdDBus" SIGNAME="__DEF__" VECFORMULA="[0:C_PLBV46_DWIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="89" NAME="PLB_SrdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="90" NAME="PLB_Srearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="91" NAME="PLB_Sssize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="92" NAME="PLB_Swait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="93" NAME="PLB_SwrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="94" NAME="PLB_SwrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="95" NAME="PLB_SwrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="96" NAME="Bus_Error_Det" SENSITIVITY="EDGE_RISING" SIGIS="INTERRUPT" SIGNAME="__NOC__"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="__NOC__" BUSSTD="DCR" BUS_STD="DCR" ISVALID="FALSE" MPD_INDEX="0" NAME="SDCR"/> + <MEMORYMAP> + <MEMRANGE BASE="0b1111111111" BASENAME="C_BASEADDR" BASEVALUE="1023" HIGH="0b0000000000" HIGHNAME="C_HIGHADDR" HIGHVALUE="0" ISVALID="FALSE" MINSIZE="0x08" SIZE="0" SIZEABRV="U"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SDCR"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/uartlite_v1_13_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/xps_uartlite_v1_00_a/doc/xps_uartlite.pdf" GROUP="C" HWVERSION="1.00.a" INSTANCE="RS232_Uart" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="3" MODCLASS="PERIPHERAL" MODTYPE="xps_uartlite" SAV_INDEX="11"> + <DESCRIPTION TYPE="SHORT">XPS UART (Lite)</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Generic UART (Universal Asynchronous Receiver/Transmitter) for PLBV46 bus.</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="1" NAME="C_SPLB_CLK_FREQ_HZ" VALUE="100000000"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="2" NAME="C_BASEADDR" VALUE="0x84000000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="3" NAME="C_HIGHADDR" VALUE="0x8400ffff"/> + <PARAMETER MPD_INDEX="4" NAME="C_SPLB_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="5" NAME="C_SPLB_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="6" NAME="C_SPLB_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="7" NAME="C_SPLB_MID_WIDTH" VALUE="1"/> + <PARAMETER MPD_INDEX="8" NAME="C_SPLB_NUM_MASTERS" VALUE="1"/> + <PARAMETER MPD_INDEX="9" NAME="C_SPLB_SUPPORT_BURSTS" VALUE="0"/> + <PARAMETER MPD_INDEX="10" NAME="C_SPLB_NATIVE_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="11" NAME="C_BAUDRATE" VALUE="9600"/> + <PARAMETER MPD_INDEX="12" NAME="C_DATA_BITS" VALUE="8"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="13" NAME="C_USE_PARITY" VALUE="0"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="14" NAME="C_ODD_PARITY" VALUE="0"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="0" NAME="SPLB"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="42" NAME="RX" SIGNAME="fpga_0_RS232_Uart_RX"> + <DESCRIPTION>Serial Data In</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="43" NAME="TX" SIGNAME="fpga_0_RS232_Uart_TX"> + <DESCRIPTION>Serial Data Out</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="44" NAME="Interrupt" SENSITIVITY="EDGE_RISING" SIGIS="INTERRUPT" SIGNAME="RS232_Uart_Interrupt"/> + <PORT DIR="I" MPD_INDEX="0" NAME="SPLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="SPLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="2" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="3" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="4" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_MID_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="5" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_SPLB_DWIDTH/8)-1)]"/> + <PORT DIR="I" MPD_INDEX="7" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="8" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="10" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="11" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="PLB_rdPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="13" NAME="PLB_wrPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="14" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="15" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="16" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="17" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="18" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="19" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="21" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="22" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="23" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="24" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="26" NAME="Sl_addrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="28" NAME="Sl_wait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="Sl_rearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="Sl_wrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="Sl_wrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="33" NAME="Sl_rdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="34" NAME="Sl_rdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="35" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="36" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="37" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="38" NAME="Sl_wrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="39" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="40" NAME="Sl_rdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="41" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <INTCCNTLRTRGS> + <INTCTRG INTCINDEX="0" PRIORITY="0"/> + </INTCCNTLRTRGS> + <MEMORYMAP> + <MEMRANGE BASE="0x84000000" BASENAME="C_BASEADDR" BASEVALUE="2214592512" HIGH="0x8400ffff" HIGHNAME="C_HIGHADDR" HIGHVALUE="2214658047" MINSIZE="0x10" SIZE="65536" SIZEABRV="64K"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/gpio_v2_12_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/xps_gpio_v1_00_a/doc/xps_gpio.pdf" GROUP="A" HWVERSION="1.00.a" INSTANCE="LEDs_4Bit" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="4" MODCLASS="PERIPHERAL" MODTYPE="xps_gpio" SAV_INDEX="7"> + <DESCRIPTION TYPE="SHORT">XPS General Purpose IO</DESCRIPTION> + <DESCRIPTION TYPE="LONG">General Purpose Input/Output (GPIO) core for the PLBV46 bus.</DESCRIPTION> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="0" NAME="C_BASEADDR" VALUE="0x81400000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="1" NAME="C_HIGHADDR" VALUE="0x8140ffff"/> + <PARAMETER MPD_INDEX="2" NAME="C_SPLB_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="3" NAME="C_SPLB_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="4" NAME="C_SPLB_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="5" NAME="C_SPLB_MID_WIDTH" VALUE="1"/> + <PARAMETER MPD_INDEX="6" NAME="C_SPLB_NUM_MASTERS" VALUE="1"/> + <PARAMETER MPD_INDEX="7" NAME="C_SPLB_NATIVE_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="8" NAME="C_SPLB_SUPPORT_BURSTS" VALUE="0"/> + <PARAMETER MPD_INDEX="9" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="10" NAME="C_GPIO_WIDTH" VALUE="4"/> + <PARAMETER MPD_INDEX="11" NAME="C_ALL_INPUTS" VALUE="0"/> + <PARAMETER MPD_INDEX="12" NAME="C_INTERRUPT_PRESENT" VALUE="0"/> + <PARAMETER MPD_INDEX="13" NAME="C_IS_BIDIR" VALUE="1"/> + <PARAMETER MPD_INDEX="14" NAME="C_DOUT_DEFAULT" VALUE="0x00000000"/> + <PARAMETER MPD_INDEX="15" NAME="C_TRI_DEFAULT" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="16" NAME="C_IS_DUAL" VALUE="0"/> + <PARAMETER MPD_INDEX="17" NAME="C_ALL_INPUTS_2" VALUE="0"/> + <PARAMETER MPD_INDEX="18" NAME="C_IS_BIDIR_2" VALUE="1"/> + <PARAMETER MPD_INDEX="19" NAME="C_DOUT_DEFAULT_2" VALUE="0x00000000"/> + <PARAMETER MPD_INDEX="20" NAME="C_TRI_DEFAULT_2" VALUE="0xffffffff"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="0" NAME="SPLB"/> + <PORT DIR="IO" INMHS="TRUE" MPD_INDEX="43" NAME="GPIO_IO" SIGNAME="fpga_0_LEDs_4Bit_GPIO_IO" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"> + <DESCRIPTION>GPIO1 Data IO</DESCRIPTION> + </PORT> + <PORT DIR="I" MPD_INDEX="0" NAME="SPLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="SPLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="2" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="3" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="4" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="5" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="PLB_rdPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="7" NAME="PLB_wrPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="8" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_MID_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="10" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_SPLB_DWIDTH/8)-1)]"/> + <PORT DIR="I" MPD_INDEX="13" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="14" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="15" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="16" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="17" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="18" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="19" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="21" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="22" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="23" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="24" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="26" NAME="Sl_addrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="28" NAME="Sl_wait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="Sl_rearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="Sl_wrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="Sl_wrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="Sl_wrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="33" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="34" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="35" NAME="Sl_rdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="36" NAME="Sl_rdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="37" NAME="Sl_rdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="38" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="39" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="40" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="41" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="42" NAME="IP2INTC_Irpt" SENSITIVITY="LEVEL_HIGH" SIGIS="INTERRUPT" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="44" NAME="GPIO_IO_I" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="45" NAME="GPIO_IO_O" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="46" NAME="GPIO_IO_T" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="47" NAME="GPIO_in" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="48" NAME="GPIO_d_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="49" NAME="GPIO_t_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="IO" ISVALID="FALSE" MPD_INDEX="50" NAME="GPIO2_IO" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="I" ISVALID="FALSE" MPD_INDEX="51" NAME="GPIO2_IO_I" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="52" NAME="GPIO2_IO_O" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="53" NAME="GPIO2_IO_T" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="I" ISVALID="FALSE" MPD_INDEX="54" NAME="GPIO2_in" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="55" NAME="GPIO2_d_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="56" NAME="GPIO2_t_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <MEMORYMAP> + <MEMRANGE BASE="0x81400000" BASENAME="C_BASEADDR" BASEVALUE="2168455168" HIGH="0x8140ffff" HIGHNAME="C_HIGHADDR" HIGHVALUE="2168520703" MINSIZE="0x200" SIZE="65536" SIZEABRV="64K"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/gpio_v2_12_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/xps_gpio_v1_00_a/doc/xps_gpio.pdf" GROUP="B" HWVERSION="1.00.a" INSTANCE="LEDs_Positions" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="5" MODCLASS="PERIPHERAL" MODTYPE="xps_gpio" SAV_INDEX="8"> + <DESCRIPTION TYPE="SHORT">XPS General Purpose IO</DESCRIPTION> + <DESCRIPTION TYPE="LONG">General Purpose Input/Output (GPIO) core for the PLBV46 bus.</DESCRIPTION> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="0" NAME="C_BASEADDR" VALUE="0x81420000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="1" NAME="C_HIGHADDR" VALUE="0x8142ffff"/> + <PARAMETER MPD_INDEX="2" NAME="C_SPLB_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="3" NAME="C_SPLB_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="4" NAME="C_SPLB_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="5" NAME="C_SPLB_MID_WIDTH" VALUE="1"/> + <PARAMETER MPD_INDEX="6" NAME="C_SPLB_NUM_MASTERS" VALUE="1"/> + <PARAMETER MPD_INDEX="7" NAME="C_SPLB_NATIVE_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="8" NAME="C_SPLB_SUPPORT_BURSTS" VALUE="0"/> + <PARAMETER MPD_INDEX="9" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="10" NAME="C_GPIO_WIDTH" VALUE="5"/> + <PARAMETER MPD_INDEX="11" NAME="C_ALL_INPUTS" VALUE="0"/> + <PARAMETER MPD_INDEX="12" NAME="C_INTERRUPT_PRESENT" VALUE="0"/> + <PARAMETER MPD_INDEX="13" NAME="C_IS_BIDIR" VALUE="1"/> + <PARAMETER MPD_INDEX="14" NAME="C_DOUT_DEFAULT" VALUE="0x00000000"/> + <PARAMETER MPD_INDEX="15" NAME="C_TRI_DEFAULT" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="16" NAME="C_IS_DUAL" VALUE="0"/> + <PARAMETER MPD_INDEX="17" NAME="C_ALL_INPUTS_2" VALUE="0"/> + <PARAMETER MPD_INDEX="18" NAME="C_IS_BIDIR_2" VALUE="1"/> + <PARAMETER MPD_INDEX="19" NAME="C_DOUT_DEFAULT_2" VALUE="0x00000000"/> + <PARAMETER MPD_INDEX="20" NAME="C_TRI_DEFAULT_2" VALUE="0xffffffff"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="0" NAME="SPLB"/> + <PORT DIR="IO" INMHS="TRUE" MPD_INDEX="43" NAME="GPIO_IO" SIGNAME="fpga_0_LEDs_Positions_GPIO_IO" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"> + <DESCRIPTION>GPIO1 Data IO</DESCRIPTION> + </PORT> + <PORT DIR="I" MPD_INDEX="0" NAME="SPLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="SPLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="2" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="3" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="4" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="5" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="PLB_rdPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="7" NAME="PLB_wrPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="8" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_MID_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="10" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_SPLB_DWIDTH/8)-1)]"/> + <PORT DIR="I" MPD_INDEX="13" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="14" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="15" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="16" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="17" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="18" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="19" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="21" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="22" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="23" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="24" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="26" NAME="Sl_addrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="28" NAME="Sl_wait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="Sl_rearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="Sl_wrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="Sl_wrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="Sl_wrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="33" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="34" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="35" NAME="Sl_rdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="36" NAME="Sl_rdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="37" NAME="Sl_rdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="38" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="39" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="40" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="41" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="42" NAME="IP2INTC_Irpt" SENSITIVITY="LEVEL_HIGH" SIGIS="INTERRUPT" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="44" NAME="GPIO_IO_I" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="45" NAME="GPIO_IO_O" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="46" NAME="GPIO_IO_T" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="47" NAME="GPIO_in" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="48" NAME="GPIO_d_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="49" NAME="GPIO_t_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="IO" ISVALID="FALSE" MPD_INDEX="50" NAME="GPIO2_IO" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="I" ISVALID="FALSE" MPD_INDEX="51" NAME="GPIO2_IO_I" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="52" NAME="GPIO2_IO_O" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="53" NAME="GPIO2_IO_T" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="I" ISVALID="FALSE" MPD_INDEX="54" NAME="GPIO2_in" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="55" NAME="GPIO2_d_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="56" NAME="GPIO2_t_out" SIGNAME="__NOC__" VECFORMULA="[0:(C_GPIO_WIDTH-1)]"/> + <MEMORYMAP> + <MEMRANGE BASE="0x81420000" BASENAME="C_BASEADDR" BASEVALUE="2168586240" HIGH="0x8142ffff" HIGHNAME="C_HIGHADDR" HIGHVALUE="2168651775" MINSIZE="0x200" SIZE="65536" SIZEABRV="64K"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/sysace_v1_11_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/xps_sysace_v1_00_a/doc/xps_sysace.pdf" GROUP="F" HWVERSION="1.00.a" INSTANCE="SysACE_CompactFlash" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="6" MODCLASS="PERIPHERAL" MODTYPE="xps_sysace" SAV_INDEX="10"> + <DESCRIPTION TYPE="SHORT">XPS System ACE Interface Controller(Compact Flash)</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Interface between the PLBV46 and the Microprocessor Interface (MPU) of the System ACE Compact Flash solution peripheral</DESCRIPTION> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="0" NAME="C_BASEADDR" VALUE="0x83600000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="1" NAME="C_HIGHADDR" VALUE="0x8360ffff"/> + <PARAMETER MPD_INDEX="2" NAME="C_MEM_WIDTH" VALUE="16"/> + <PARAMETER MPD_INDEX="3" NAME="C_SPLB_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="4" NAME="C_SPLB_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="5" NAME="C_SPLB_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="6" NAME="C_SPLB_MID_WIDTH" VALUE="3"/> + <PARAMETER MPD_INDEX="7" NAME="C_SPLB_NUM_MASTERS" VALUE="8"/> + <PARAMETER MPD_INDEX="8" NAME="C_SPLB_NATIVE_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="9" NAME="C_SPLB_SUPPORT_BURSTS" VALUE="0"/> + <PARAMETER MPD_INDEX="10" NAME="C_FAMILY" VALUE="virtex5"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="0" NAME="SPLB"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="43" NAME="SysACE_CLK" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_CLK"> + <DESCRIPTION>Clock Input</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="42" NAME="SysACE_MPA" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_MPA & SysACE_CompactFlash_SysACE_MPA" VECFORMULA="[6:0]"> + <DESCRIPTION>Address Input</DESCRIPTION> + </PORT> + <PORT DIR="IO" INMHS="TRUE" MPD_INDEX="45" NAME="SysACE_MPD" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_MPD" VECFORMULA="[(C_MEM_WIDTH-1):0]"> + <DESCRIPTION>Data Input/Output</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="49" NAME="SysACE_CEN" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_CEN"> + <DESCRIPTION>Active LOW Chip Enable</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="50" NAME="SysACE_OEN" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_OEN"> + <DESCRIPTION>Active LOW Output Enable</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="51" NAME="SysACE_WEN" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_WEN"> + <DESCRIPTION>Active LOW Write Enable</DESCRIPTION> + </PORT> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="44" NAME="SysACE_MPIRQ" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_MPIRQ"> + <DESCRIPTION>Active high Interrupt Output</DESCRIPTION> + </PORT> + <PORT DIR="I" MPD_INDEX="0" NAME="SPLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="SPLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="2" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="3" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="4" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="5" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="PLB_rdPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="7" NAME="PLB_wrPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="8" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_MID_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="10" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_SPLB_DWIDTH/8)-1)]"/> + <PORT DIR="I" MPD_INDEX="13" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="14" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="15" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="16" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="17" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="18" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="19" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="21" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="22" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="23" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="24" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="26" NAME="Sl_addrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="28" NAME="Sl_wait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="Sl_rearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="Sl_wrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="Sl_wrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="Sl_wrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="33" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="34" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="35" NAME="Sl_rdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="36" NAME="Sl_rdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="37" NAME="Sl_rdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="38" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="39" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="40" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="41" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="46" NAME="SysACE_MPD_I" SIGNAME="__NOC__" VECFORMULA="[(C_MEM_WIDTH-1):0]"/> + <PORT DIR="O" MPD_INDEX="47" NAME="SysACE_MPD_O" SIGNAME="__NOC__" VECFORMULA="[(C_MEM_WIDTH-1):0]"/> + <PORT DIR="O" MPD_INDEX="48" NAME="SysACE_MPD_T" SIGNAME="__NOC__" VECFORMULA="[(C_MEM_WIDTH-1):0]"/> + <PORT DIR="O" MPD_INDEX="52" NAME="SysACE_IRQ" SENSITIVITY="LEVEL_HIGH" SIGIS="INTERRUPT" SIGNAME="__NOC__"/> + <MEMORYMAP> + <MEMRANGE BASE="0x83600000" BASENAME="C_BASEADDR" BASEVALUE="2204106752" HIGH="0x8360ffff" HIGHNAME="C_HIGHADDR" HIGHVALUE="2204172287" MINSIZE="0x80" SIZE="65536" SIZEABRV="64K"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/emc_v2_00_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/xps_mch_emc_v1_01_a/doc/xps_mch_emc.pdf" GROUP="D" HWVERSION="1.01.a" INSTANCE="SRAM" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="7" MODCLASS="MEMORY_CNTLR" MODTYPE="xps_mch_emc" SAV_INDEX="3"> + <DESCRIPTION TYPE="SHORT">XPS Multi-Channel External Memory Controller(SRAM/Flash)</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Xilinx Multi-CHannel (MCH) PLBV46 external memory controller</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="1" NAME="C_NUM_BANKS_MEM" VALUE="1"/> + <PARAMETER MPD_INDEX="2" NAME="C_NUM_CHANNELS" VALUE="2"/> + <PARAMETER MPD_INDEX="3" NAME="C_PRIORITY_MODE" VALUE="0"/> + <PARAMETER MPD_INDEX="4" NAME="C_INCLUDE_PLB_IPIF" VALUE="1"/> + <PARAMETER MPD_INDEX="5" NAME="C_INCLUDE_WRBUF" VALUE="1"/> + <PARAMETER MPD_INDEX="6" NAME="C_SPLB_MID_WIDTH" VALUE="1"/> + <PARAMETER MPD_INDEX="7" NAME="C_SPLB_NUM_MASTERS" VALUE="1"/> + <PARAMETER MPD_INDEX="8" NAME="C_SPLB_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="9" NAME="C_SPLB_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="10" NAME="C_MCH_SPLB_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="11" NAME="C_SPLB_SMALLEST_MASTER" VALUE="32"/> + <PARAMETER MPD_INDEX="12" NAME="C_MCH_NATIVE_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="13" NAME="C_MCH_PLB_CLK_PERIOD_PS" VALUE="10000"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="MEMORY" CHANGEDBY="USER" MPD_INDEX="14" NAME="C_MEM0_BASEADDR" VALUE="0xfff00000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="MEMORY" CHANGEDBY="USER" MPD_INDEX="15" NAME="C_MEM0_HIGHADDR" VALUE="0xffffffff"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="MEMORY" MPD_INDEX="16" NAME="C_MEM1_BASEADDR" VALUE="0xffffffff"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="MEMORY" MPD_INDEX="17" NAME="C_MEM1_HIGHADDR" VALUE="0x00000000"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="MEMORY" MPD_INDEX="18" NAME="C_MEM2_BASEADDR" VALUE="0xffffffff"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="MEMORY" MPD_INDEX="19" NAME="C_MEM2_HIGHADDR" VALUE="0x00000000"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="MEMORY" MPD_INDEX="20" NAME="C_MEM3_BASEADDR" VALUE="0xffffffff"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="MEMORY" MPD_INDEX="21" NAME="C_MEM3_HIGHADDR" VALUE="0x00000000"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="22" NAME="C_INCLUDE_NEGEDGE_IOREGS" VALUE="1"/> + <PARAMETER MPD_INDEX="23" NAME="C_MEM0_WIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="24" NAME="C_MEM1_WIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="25" NAME="C_MEM2_WIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="26" NAME="C_MEM3_WIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="27" NAME="C_MAX_MEM_WIDTH" VALUE="32"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="28" NAME="C_INCLUDE_DATAWIDTH_MATCHING_0" VALUE="1"/> + <PARAMETER MPD_INDEX="29" NAME="C_INCLUDE_DATAWIDTH_MATCHING_1" VALUE="0"/> + <PARAMETER MPD_INDEX="30" NAME="C_INCLUDE_DATAWIDTH_MATCHING_2" VALUE="0"/> + <PARAMETER MPD_INDEX="31" NAME="C_INCLUDE_DATAWIDTH_MATCHING_3" VALUE="0"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="32" NAME="C_SYNCH_MEM_0" VALUE="1"/> + <PARAMETER MPD_INDEX="33" NAME="C_SYNCH_PIPEDELAY_0" VALUE="2"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="34" NAME="C_TCEDV_PS_MEM_0" VALUE="0"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="35" NAME="C_TAVDV_PS_MEM_0" VALUE="0"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="36" NAME="C_THZCE_PS_MEM_0" VALUE="0"/> + <PARAMETER MPD_INDEX="37" NAME="C_THZOE_PS_MEM_0" VALUE="7000"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="38" NAME="C_TWC_PS_MEM_0" VALUE="0"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="39" NAME="C_TWP_PS_MEM_0" VALUE="0"/> + <PARAMETER MPD_INDEX="40" NAME="C_TLZWE_PS_MEM_0" VALUE="0"/> + <PARAMETER MPD_INDEX="41" NAME="C_SYNCH_MEM_1" VALUE="0"/> + <PARAMETER MPD_INDEX="42" NAME="C_SYNCH_PIPEDELAY_1" VALUE="2"/> + <PARAMETER MPD_INDEX="43" NAME="C_TCEDV_PS_MEM_1" VALUE="15000"/> + <PARAMETER MPD_INDEX="44" NAME="C_TAVDV_PS_MEM_1" VALUE="15000"/> + <PARAMETER MPD_INDEX="45" NAME="C_THZCE_PS_MEM_1" VALUE="7000"/> + <PARAMETER MPD_INDEX="46" NAME="C_THZOE_PS_MEM_1" VALUE="7000"/> + <PARAMETER MPD_INDEX="47" NAME="C_TWC_PS_MEM_1" VALUE="15000"/> + <PARAMETER MPD_INDEX="48" NAME="C_TWP_PS_MEM_1" VALUE="12000"/> + <PARAMETER MPD_INDEX="49" NAME="C_TLZWE_PS_MEM_1" VALUE="0"/> + <PARAMETER MPD_INDEX="50" NAME="C_SYNCH_MEM_2" VALUE="0"/> + <PARAMETER MPD_INDEX="51" NAME="C_SYNCH_PIPEDELAY_2" VALUE="2"/> + <PARAMETER MPD_INDEX="52" NAME="C_TCEDV_PS_MEM_2" VALUE="15000"/> + <PARAMETER MPD_INDEX="53" NAME="C_TAVDV_PS_MEM_2" VALUE="15000"/> + <PARAMETER MPD_INDEX="54" NAME="C_THZCE_PS_MEM_2" VALUE="7000"/> + <PARAMETER MPD_INDEX="55" NAME="C_THZOE_PS_MEM_2" VALUE="7000"/> + <PARAMETER MPD_INDEX="56" NAME="C_TWC_PS_MEM_2" VALUE="15000"/> + <PARAMETER MPD_INDEX="57" NAME="C_TWP_PS_MEM_2" VALUE="12000"/> + <PARAMETER MPD_INDEX="58" NAME="C_TLZWE_PS_MEM_2" VALUE="0"/> + <PARAMETER MPD_INDEX="59" NAME="C_SYNCH_MEM_3" VALUE="0"/> + <PARAMETER MPD_INDEX="60" NAME="C_SYNCH_PIPEDELAY_3" VALUE="2"/> + <PARAMETER MPD_INDEX="61" NAME="C_TCEDV_PS_MEM_3" VALUE="15000"/> + <PARAMETER MPD_INDEX="62" NAME="C_TAVDV_PS_MEM_3" VALUE="15000"/> + <PARAMETER MPD_INDEX="63" NAME="C_THZCE_PS_MEM_3" VALUE="7000"/> + <PARAMETER MPD_INDEX="64" NAME="C_THZOE_PS_MEM_3" VALUE="7000"/> + <PARAMETER MPD_INDEX="65" NAME="C_TWC_PS_MEM_3" VALUE="15000"/> + <PARAMETER MPD_INDEX="66" NAME="C_TWP_PS_MEM_3" VALUE="12000"/> + <PARAMETER MPD_INDEX="67" NAME="C_TLZWE_PS_MEM_3" VALUE="0"/> + <PARAMETER MPD_INDEX="68" NAME="C_MCH0_PROTOCOL" VALUE="0"/> + <PARAMETER MPD_INDEX="69" NAME="C_MCH0_ACCESSBUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="70" NAME="C_MCH0_RDDATABUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="71" NAME="C_MCH1_PROTOCOL" VALUE="0"/> + <PARAMETER MPD_INDEX="72" NAME="C_MCH1_ACCESSBUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="73" NAME="C_MCH1_RDDATABUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="74" NAME="C_MCH2_PROTOCOL" VALUE="0"/> + <PARAMETER MPD_INDEX="75" NAME="C_MCH2_ACCESSBUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="76" NAME="C_MCH2_RDDATABUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="77" NAME="C_MCH3_PROTOCOL" VALUE="0"/> + <PARAMETER MPD_INDEX="78" NAME="C_MCH3_ACCESSBUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="79" NAME="C_MCH3_RDDATABUF_DEPTH" VALUE="16"/> + <PARAMETER MPD_INDEX="80" NAME="C_XCL0_LINESIZE" VALUE="4"/> + <PARAMETER MPD_INDEX="81" NAME="C_XCL0_WRITEXFER" VALUE="1"/> + <PARAMETER MPD_INDEX="82" NAME="C_XCL1_LINESIZE" VALUE="4"/> + <PARAMETER MPD_INDEX="83" NAME="C_XCL1_WRITEXFER" VALUE="1"/> + <PARAMETER MPD_INDEX="84" NAME="C_XCL2_LINESIZE" VALUE="4"/> + <PARAMETER MPD_INDEX="85" NAME="C_XCL2_WRITEXFER" VALUE="1"/> + <PARAMETER MPD_INDEX="86" NAME="C_XCL3_LINESIZE" VALUE="4"/> + <PARAMETER MPD_INDEX="87" NAME="C_XCL3_WRITEXFER" VALUE="1"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="0" NAME="SPLB"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="79" NAME="Mem_A" SIGNAME="fpga_0_SRAM_Mem_A_split" VECFORMULA="[0:(C_MCH_SPLB_AWIDTH-1)]"> + <DESCRIPTION>Memory Address Bus</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="85" NAME="Mem_BEN" SIGNAME="fpga_0_SRAM_Mem_BEN" VECFORMULA="[0:((C_MAX_MEM_WIDTH/8)-1)]"> + <DESCRIPTION>Memory Byte Enable</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="83" NAME="Mem_WEN" SIGNAME="fpga_0_SRAM_Mem_WEN"> + <DESCRIPTION>Memory Write Enable</DESCRIPTION> + </PORT> + <PORT DIR="IO" INMHS="TRUE" MPD_INDEX="75" NAME="Mem_DQ" SIGNAME="fpga_0_SRAM_Mem_DQ" VECFORMULA="[0:(C_MAX_MEM_WIDTH-1)]"> + <DESCRIPTION>Memory Data Bus</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="82" NAME="Mem_OEN" SIGNAME="fpga_0_SRAM_Mem_OEN" VECFORMULA="[0:(C_NUM_BANKS_MEM-1)]"> + <DESCRIPTION>Memory Output Enable</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="81" NAME="Mem_CEN" SIGNAME="fpga_0_SRAM_Mem_CEN" VECFORMULA="[0:(C_NUM_BANKS_MEM-1)]"> + <DESCRIPTION>Memory Chip Enable Active Low</DESCRIPTION> + </PORT> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="87" NAME="Mem_ADV_LDN" SIGNAME="fpga_0_SRAM_Mem_ADV_LDN"> + <DESCRIPTION>Memory Advanced Burst Address/Load New Address</DESCRIPTION> + </PORT> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="1" NAME="RdClk" SIGIS="CLK" SIGNAME="sys_clk_s"/> + <PORT DIR="I" MPD_INDEX="0" NAME="MCH_PLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="2" NAME="MCH_PLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="3" NAME="MCH0_Access_Control" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="4" NAME="MCH0_Access_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="5" NAME="MCH0_Access_Write" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="6" NAME="MCH0_Access_Full" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="7" NAME="MCH0_ReadData_Control" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="8" NAME="MCH0_ReadData_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="MCH0_ReadData_Read" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="10" NAME="MCH0_ReadData_Exists" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="11" NAME="MCH1_Access_Control" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="MCH1_Access_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="13" NAME="MCH1_Access_Write" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="14" NAME="MCH1_Access_Full" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="15" NAME="MCH1_ReadData_Control" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="16" NAME="MCH1_ReadData_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="17" NAME="MCH1_ReadData_Read" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="18" NAME="MCH1_ReadData_Exists" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="19" NAME="MCH2_Access_Control" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="MCH2_Access_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="21" NAME="MCH2_Access_Write" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="22" NAME="MCH2_Access_Full" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="23" NAME="MCH2_ReadData_Control" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="24" NAME="MCH2_ReadData_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="MCH2_ReadData_Read" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="26" NAME="MCH2_ReadData_Exists" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="27" NAME="MCH3_Access_Control" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="28" NAME="MCH3_Access_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="29" NAME="MCH3_Access_Write" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="MCH3_Access_Full" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="MCH3_ReadData_Control" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="MCH3_ReadData_Data" SIGNAME="__DEF__" VECFORMULA="[0:(C_MCH_NATIVE_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="33" NAME="MCH3_ReadData_Read" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="34" NAME="MCH3_ReadData_Exists" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="35" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="36" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="37" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="38" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="39" NAME="PLB_rdPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="40" NAME="PLB_wrPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="41" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_MID_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="42" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="43" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="44" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="45" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_SPLB_DWIDTH/8)-1)]"/> + <PORT DIR="I" MPD_INDEX="46" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="47" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="48" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="49" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="50" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="51" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="52" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="53" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="54" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="55" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="56" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="57" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="58" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="59" NAME="Sl_addrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="60" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="61" NAME="Sl_wait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="62" NAME="Sl_rearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="63" NAME="Sl_wrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="64" NAME="Sl_wrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="65" NAME="Sl_wrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="66" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="67" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="68" NAME="Sl_rdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="69" NAME="Sl_rdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="70" NAME="Sl_rdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="71" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="72" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="73" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="74" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="76" NAME="Mem_DQ_I" SIGNAME="__NOC__" VECFORMULA="[0:(C_MAX_MEM_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="77" NAME="Mem_DQ_O" SIGNAME="__NOC__" VECFORMULA="[0:(C_MAX_MEM_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="78" NAME="Mem_DQ_T" SIGNAME="__NOC__" VECFORMULA="[0:(C_MAX_MEM_WIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="80" NAME="Mem_RPN" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="84" NAME="Mem_QWEN" SIGNAME="__NOC__" VECFORMULA="[0:((C_MAX_MEM_WIDTH/8)-1)]"/> + <PORT DIR="O" MPD_INDEX="86" NAME="Mem_CE" SIGNAME="__NOC__" VECFORMULA="[0:(C_NUM_BANKS_MEM-1)]"/> + <PORT DIR="O" MPD_INDEX="88" NAME="Mem_LBON" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="89" NAME="Mem_CKEN" SIGNAME="__NOC__"/> + <PORT DIR="O" MPD_INDEX="90" NAME="Mem_RNW" SIGNAME="__NOC__"/> + <BUSINTERFACE BIFRANK="TARGET" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_MEMORY_CHANNEL" MPD_INDEX="1" NAME="MCH0"/> + <BUSINTERFACE BIFRANK="TARGET" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_MEMORY_CHANNEL" MPD_INDEX="2" NAME="MCH1"/> + <BUSINTERFACE BIFRANK="TARGET" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_MEMORY_CHANNEL" ISVALID="FALSE" MPD_INDEX="3" NAME="MCH2"/> + <BUSINTERFACE BIFRANK="TARGET" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_MEMORY_CHANNEL" ISVALID="FALSE" MPD_INDEX="4" NAME="MCH3"/> + <MEMORYMAP> + <MEMRANGE BASE="0xfff00000" BASENAME="C_MEM0_BASEADDR" BASEVALUE="4293918720" HIGH="0xffffffff" HIGHNAME="C_MEM0_HIGHADDR" HIGHVALUE="4294967295" IS_CACHEABLE="TRUE" SIZE="1048576" SIZEABRV="1M"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + <MEMBUSINTERFACE NAME="MCH0"/> + <MEMBUSINTERFACE NAME="MCH1"/> + <MEMBUSINTERFACE NAME="MCH2"/> + <MEMBUSINTERFACE NAME="MCH3"/> + </MEMBUSINTERFACES> + </MEMRANGE> + <MEMRANGE BASE="0xffffffff" BASENAME="C_MEM1_BASEADDR" BASEVALUE="4294967295" HIGH="0x00000000" HIGHNAME="C_MEM1_HIGHADDR" HIGHVALUE="0" ISVALID="FALSE" IS_CACHEABLE="TRUE" SIZE="0" SIZEABRV="U"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + <MEMBUSINTERFACE NAME="MCH0"/> + <MEMBUSINTERFACE NAME="MCH1"/> + <MEMBUSINTERFACE NAME="MCH2"/> + <MEMBUSINTERFACE NAME="MCH3"/> + </MEMBUSINTERFACES> + </MEMRANGE> + <MEMRANGE BASE="0xffffffff" BASENAME="C_MEM2_BASEADDR" BASEVALUE="4294967295" HIGH="0x00000000" HIGHNAME="C_MEM2_HIGHADDR" HIGHVALUE="0" ISVALID="FALSE" IS_CACHEABLE="TRUE" SIZE="0" SIZEABRV="U"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + <MEMBUSINTERFACE NAME="MCH0"/> + <MEMBUSINTERFACE NAME="MCH1"/> + <MEMBUSINTERFACE NAME="MCH2"/> + <MEMBUSINTERFACE NAME="MCH3"/> + </MEMBUSINTERFACES> + </MEMRANGE> + <MEMRANGE BASE="0xffffffff" BASENAME="C_MEM3_BASEADDR" BASEVALUE="4294967295" HIGH="0x00000000" HIGHNAME="C_MEM3_HIGHADDR" HIGHVALUE="0" ISVALID="FALSE" IS_CACHEABLE="TRUE" SIZE="0" SIZEABRV="U"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + <MEMBUSINTERFACE NAME="MCH0"/> + <MEMBUSINTERFACE NAME="MCH1"/> + <MEMBUSINTERFACE NAME="MCH2"/> + <MEMBUSINTERFACE NAME="MCH3"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/generic_v1_00_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/util_bus_split_v1_00_a/doc/util_bus_split.pdf" GROUP="E" HWVERSION="1.00.a" INSTANCE="SRAM_util_bus_split_0" IPTYPE="PERIPHERAL" MHS_INDEX="8" MODCLASS="IP" MODTYPE="util_bus_split" SAV_INDEX="13"> + <DESCRIPTION TYPE="SHORT">Utility Bus Split</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Bus splitting primitive</DESCRIPTION> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="0" NAME="C_SIZE_IN" VALUE="32"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="1" NAME="C_LEFT_POS" VALUE="9"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="2" NAME="C_SPLIT" VALUE="30"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="0" NAME="Sig" SIGNAME="fpga_0_SRAM_Mem_A_split" VECFORMULA="[0:C_SIZE_IN-1]"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="1" NAME="Out1" SIGNAME="fpga_0_SRAM_Mem_A" VECFORMULA="[C_LEFT_POS:C_SPLIT-1]"/> + <PORT DIR="O" MPD_INDEX="2" NAME="Out2" SIGNAME="__NOC__" VECFORMULA="[C_SPLIT:C_SIZE_IN-1]"/> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/generic_v1_00_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/clock_generator_v2_01_a/doc/html.pdf" GROUP="G" HWVERSION="2.01.a" INSTANCE="clock_generator_0" IPTYPE="PERIPHERAL" MHS_INDEX="9" MODCLASS="IP" MODTYPE="clock_generator" SAV_INDEX="12"> + <DESCRIPTION TYPE="SHORT">Clock Generator</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Clock generator for processor system.</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="1" NAME="C_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="2" NAME="C_CLK_GEN" VALUE="0"/> + <PARAMETER MPD_INDEX="3" NAME="C_NUM_PLL" VALUE="0"/> + <PARAMETER MPD_INDEX="4" NAME="C_NUM_DCM" VALUE="0"/> + <PARAMETER MPD_INDEX="5" NAME="C_CLKOUT0_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="6" NAME="C_CLKOUT0_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="7" NAME="C_CLKOUT1_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="8" NAME="C_CLKOUT1_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="9" NAME="C_CLKOUT2_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="10" NAME="C_CLKOUT2_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="11" NAME="C_CLKOUT3_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="12" NAME="C_CLKOUT3_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="13" NAME="C_CLKOUT4_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="14" NAME="C_CLKOUT4_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="15" NAME="C_CLKOUT5_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="16" NAME="C_CLKOUT5_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="17" NAME="C_CLKOUT6_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="18" NAME="C_CLKOUT6_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="19" NAME="C_CLKOUT7_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="20" NAME="C_CLKOUT7_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="21" NAME="C_CLKOUT8_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="22" NAME="C_CLKOUT8_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="23" NAME="C_CLKOUT9_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="24" NAME="C_CLKOUT9_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="25" NAME="C_CLKOUT10_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="26" NAME="C_CLKOUT10_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="27" NAME="C_CLKOUT11_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="28" NAME="C_CLKOUT11_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="29" NAME="C_CLKOUT12_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="30" NAME="C_CLKOUT12_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="31" NAME="C_CLKOUT13_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="32" NAME="C_CLKOUT13_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="33" NAME="C_CLKOUT14_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="34" NAME="C_CLKOUT14_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="35" NAME="C_CLKOUT15_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="36" NAME="C_CLKOUT15_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="37" NAME="C_CLKFBOUT_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="38" NAME="C_CLKFBOUT_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="39" NAME="C_PLL0_DIVCLK_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="40" NAME="C_PLL0_CLKFBOUT_MULT" VALUE="1"/> + <PARAMETER MPD_INDEX="41" NAME="C_PLL0_CLKFBOUT_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="42" NAME="C_PLL0_CLKIN1_PERIOD" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="43" NAME="C_PLL0_CLKOUT0_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="44" NAME="C_PLL0_CLKOUT0_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="45" NAME="C_PLL0_CLKOUT0_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="46" NAME="C_PLL0_CLKOUT1_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="47" NAME="C_PLL0_CLKOUT1_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="48" NAME="C_PLL0_CLKOUT1_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="49" NAME="C_PLL0_CLKOUT2_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="50" NAME="C_PLL0_CLKOUT2_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="51" NAME="C_PLL0_CLKOUT2_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="52" NAME="C_PLL0_CLKOUT3_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="53" NAME="C_PLL0_CLKOUT3_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="54" NAME="C_PLL0_CLKOUT3_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="55" NAME="C_PLL0_CLKOUT4_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="56" NAME="C_PLL0_CLKOUT4_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="57" NAME="C_PLL0_CLKOUT4_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="58" NAME="C_PLL0_CLKOUT5_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="59" NAME="C_PLL0_CLKOUT5_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="60" NAME="C_PLL0_CLKOUT5_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="61" NAME="C_PLL0_BANDWIDTH" VALUE="OPTIMIZED"/> + <PARAMETER MPD_INDEX="62" NAME="C_PLL0_COMPENSATION" VALUE="SYSTEM_SYNCHRONOUS"/> + <PARAMETER MPD_INDEX="63" NAME="C_PLL0_REF_JITTER" VALUE="0.100000"/> + <PARAMETER MPD_INDEX="64" NAME="C_PLL0_RESET_ON_LOSS_OF_LOCK" VALUE="false"/> + <PARAMETER MPD_INDEX="65" NAME="C_PLL0_RST_DEASSERT_CLK" VALUE="CLKIN1"/> + <PARAMETER MPD_INDEX="66" NAME="C_PLL0_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="67" NAME="C_PLL0_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="68" NAME="C_PLL0_CLKOUT0_DESKEW_ADJUST" VALUE="NONE"/> + <PARAMETER MPD_INDEX="69" NAME="C_PLL0_CLKOUT1_DESKEW_ADJUST" VALUE="NONE"/> + <PARAMETER MPD_INDEX="70" NAME="C_PLL0_CLKOUT2_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="71" NAME="C_PLL0_CLKOUT3_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="72" NAME="C_PLL0_CLKOUT4_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="73" NAME="C_PLL0_CLKOUT5_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="74" NAME="C_PLL0_CLKFBOUT_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="75" NAME="C_PLL0_CLKIN1_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="76" NAME="C_PLL0_CLKFBOUT_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="77" NAME="C_PLL0_CLKOUT0_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="78" NAME="C_PLL0_CLKOUT1_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="79" NAME="C_PLL0_CLKOUT2_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="80" NAME="C_PLL0_CLKOUT3_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="81" NAME="C_PLL0_CLKOUT4_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="82" NAME="C_PLL0_CLKOUT5_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="83" NAME="C_PLL0_CLKIN1_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="84" NAME="C_PLL0_CLKIN1_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="85" NAME="C_PLL0_CLKFBIN_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="86" NAME="C_PLL0_CLKFBIN_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="87" NAME="C_PLL0_RST_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="88" NAME="C_PLL1_DIVCLK_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="89" NAME="C_PLL1_CLKFBOUT_MULT" VALUE="1"/> + <PARAMETER MPD_INDEX="90" NAME="C_PLL1_CLKFBOUT_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="91" NAME="C_PLL1_CLKIN1_PERIOD" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="92" NAME="C_PLL1_CLKOUT0_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="93" NAME="C_PLL1_CLKOUT0_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="94" NAME="C_PLL1_CLKOUT0_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="95" NAME="C_PLL1_CLKOUT1_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="96" NAME="C_PLL1_CLKOUT1_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="97" NAME="C_PLL1_CLKOUT1_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="98" NAME="C_PLL1_CLKOUT2_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="99" NAME="C_PLL1_CLKOUT2_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="100" NAME="C_PLL1_CLKOUT2_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="101" NAME="C_PLL1_CLKOUT3_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="102" NAME="C_PLL1_CLKOUT3_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="103" NAME="C_PLL1_CLKOUT3_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="104" NAME="C_PLL1_CLKOUT4_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="105" NAME="C_PLL1_CLKOUT4_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="106" NAME="C_PLL1_CLKOUT4_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="107" NAME="C_PLL1_CLKOUT5_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="108" NAME="C_PLL1_CLKOUT5_DUTY_CYCLE" VALUE="0.500000"/> + <PARAMETER MPD_INDEX="109" NAME="C_PLL1_CLKOUT5_PHASE" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="110" NAME="C_PLL1_BANDWIDTH" VALUE="OPTIMIZED"/> + <PARAMETER MPD_INDEX="111" NAME="C_PLL1_COMPENSATION" VALUE="SYSTEM_SYNCHRONOUS"/> + <PARAMETER MPD_INDEX="112" NAME="C_PLL1_REF_JITTER" VALUE="0.100000"/> + <PARAMETER MPD_INDEX="113" NAME="C_PLL1_RESET_ON_LOSS_OF_LOCK" VALUE="false"/> + <PARAMETER MPD_INDEX="114" NAME="C_PLL1_RST_DEASSERT_CLK" VALUE="CLKIN1"/> + <PARAMETER MPD_INDEX="115" NAME="C_PLL1_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="116" NAME="C_PLL1_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="117" NAME="C_PLL1_CLKOUT0_DESKEW_ADJUST" VALUE="NONE"/> + <PARAMETER MPD_INDEX="118" NAME="C_PLL1_CLKOUT1_DESKEW_ADJUST" VALUE="NONE"/> + <PARAMETER MPD_INDEX="119" NAME="C_PLL1_CLKOUT2_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="120" NAME="C_PLL1_CLKOUT3_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="121" NAME="C_PLL1_CLKOUT4_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="122" NAME="C_PLL1_CLKOUT5_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="123" NAME="C_PLL1_CLKFBOUT_DESKEW_ADJUST" VALUE="PPC"/> + <PARAMETER MPD_INDEX="124" NAME="C_PLL1_CLKIN1_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="125" NAME="C_PLL1_CLKFBOUT_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="126" NAME="C_PLL1_CLKOUT0_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="127" NAME="C_PLL1_CLKOUT1_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="128" NAME="C_PLL1_CLKOUT2_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="129" NAME="C_PLL1_CLKOUT3_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="130" NAME="C_PLL1_CLKOUT4_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="131" NAME="C_PLL1_CLKOUT5_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="132" NAME="C_PLL1_CLKIN1_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="133" NAME="C_PLL1_CLKIN1_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="134" NAME="C_PLL1_CLKFBIN_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="135" NAME="C_PLL1_CLKFBIN_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="136" NAME="C_PLL1_RST_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="137" NAME="C_DCM0_DFS_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="138" NAME="C_DCM0_DLL_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="139" NAME="C_DCM0_DUTY_CYCLE_CORRECTION" VALUE="true"/> + <PARAMETER MPD_INDEX="140" NAME="C_DCM0_CLKIN_DIVIDE_BY_2" VALUE="false"/> + <PARAMETER MPD_INDEX="141" NAME="C_DCM0_CLK_FEEDBACK" VALUE="1X"/> + <PARAMETER MPD_INDEX="142" NAME="C_DCM0_CLKOUT_PHASE_SHIFT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="143" NAME="C_DCM0_DSS_MODE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="144" NAME="C_DCM0_STARTUP_WAIT" VALUE="false"/> + <PARAMETER MPD_INDEX="145" NAME="C_DCM0_PHASE_SHIFT" VALUE="0"/> + <PARAMETER MPD_INDEX="146" NAME="C_DCM0_CLKFX_MULTIPLY" VALUE="4"/> + <PARAMETER MPD_INDEX="147" NAME="C_DCM0_CLKFX_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="148" NAME="C_DCM0_CLKDV_DIVIDE" VALUE="2.000000"/> + <PARAMETER MPD_INDEX="149" NAME="C_DCM0_CLKIN_PERIOD" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="150" NAME="C_DCM0_DESKEW_ADJUST" VALUE="SYSTEM_SYNCHRONOUS"/> + <PARAMETER MPD_INDEX="151" NAME="C_DCM0_CLKIN_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="152" NAME="C_DCM0_CLKFB_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="153" NAME="C_DCM0_CLK0_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="154" NAME="C_DCM0_CLK90_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="155" NAME="C_DCM0_CLK180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="156" NAME="C_DCM0_CLK270_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="157" NAME="C_DCM0_CLKDV_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="158" NAME="C_DCM0_CLKDV180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="159" NAME="C_DCM0_CLK2X_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="160" NAME="C_DCM0_CLK2X180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="161" NAME="C_DCM0_CLKFX_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="162" NAME="C_DCM0_CLKFX180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="163" NAME="C_DCM0_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="164" NAME="C_DCM0_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="165" NAME="C_DCM0_CLKIN_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="166" NAME="C_DCM0_CLKIN_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="167" NAME="C_DCM0_CLKFB_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="168" NAME="C_DCM0_CLKFB_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="169" NAME="C_DCM0_RST_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="170" NAME="C_DCM1_DFS_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="171" NAME="C_DCM1_DLL_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="172" NAME="C_DCM1_DUTY_CYCLE_CORRECTION" VALUE="true"/> + <PARAMETER MPD_INDEX="173" NAME="C_DCM1_CLKIN_DIVIDE_BY_2" VALUE="false"/> + <PARAMETER MPD_INDEX="174" NAME="C_DCM1_CLK_FEEDBACK" VALUE="1X"/> + <PARAMETER MPD_INDEX="175" NAME="C_DCM1_CLKOUT_PHASE_SHIFT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="176" NAME="C_DCM1_DSS_MODE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="177" NAME="C_DCM1_STARTUP_WAIT" VALUE="false"/> + <PARAMETER MPD_INDEX="178" NAME="C_DCM1_PHASE_SHIFT" VALUE="0"/> + <PARAMETER MPD_INDEX="179" NAME="C_DCM1_CLKFX_MULTIPLY" VALUE="4"/> + <PARAMETER MPD_INDEX="180" NAME="C_DCM1_CLKFX_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="181" NAME="C_DCM1_CLKDV_DIVIDE" VALUE="2.000000"/> + <PARAMETER MPD_INDEX="182" NAME="C_DCM1_CLKIN_PERIOD" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="183" NAME="C_DCM1_DESKEW_ADJUST" VALUE="SYSTEM_SYNCHRONOUS"/> + <PARAMETER MPD_INDEX="184" NAME="C_DCM1_CLKIN_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="185" NAME="C_DCM1_CLKFB_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="186" NAME="C_DCM1_CLK0_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="187" NAME="C_DCM1_CLK90_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="188" NAME="C_DCM1_CLK180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="189" NAME="C_DCM1_CLK270_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="190" NAME="C_DCM1_CLKDV_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="191" NAME="C_DCM1_CLKDV180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="192" NAME="C_DCM1_CLK2X_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="193" NAME="C_DCM1_CLK2X180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="194" NAME="C_DCM1_CLKFX_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="195" NAME="C_DCM1_CLKFX180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="196" NAME="C_DCM1_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="197" NAME="C_DCM1_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="198" NAME="C_DCM1_CLKIN_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="199" NAME="C_DCM1_CLKIN_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="200" NAME="C_DCM1_CLKFB_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="201" NAME="C_DCM1_CLKFB_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="202" NAME="C_DCM1_RST_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="203" NAME="C_DCM2_DFS_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="204" NAME="C_DCM2_DLL_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="205" NAME="C_DCM2_DUTY_CYCLE_CORRECTION" VALUE="true"/> + <PARAMETER MPD_INDEX="206" NAME="C_DCM2_CLKIN_DIVIDE_BY_2" VALUE="false"/> + <PARAMETER MPD_INDEX="207" NAME="C_DCM2_CLK_FEEDBACK" VALUE="1X"/> + <PARAMETER MPD_INDEX="208" NAME="C_DCM2_CLKOUT_PHASE_SHIFT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="209" NAME="C_DCM2_DSS_MODE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="210" NAME="C_DCM2_STARTUP_WAIT" VALUE="false"/> + <PARAMETER MPD_INDEX="211" NAME="C_DCM2_PHASE_SHIFT" VALUE="0"/> + <PARAMETER MPD_INDEX="212" NAME="C_DCM2_CLKFX_MULTIPLY" VALUE="4"/> + <PARAMETER MPD_INDEX="213" NAME="C_DCM2_CLKFX_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="214" NAME="C_DCM2_CLKDV_DIVIDE" VALUE="2.000000"/> + <PARAMETER MPD_INDEX="215" NAME="C_DCM2_CLKIN_PERIOD" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="216" NAME="C_DCM2_DESKEW_ADJUST" VALUE="SYSTEM_SYNCHRONOUS"/> + <PARAMETER MPD_INDEX="217" NAME="C_DCM2_CLKIN_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="218" NAME="C_DCM2_CLKFB_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="219" NAME="C_DCM2_CLK0_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="220" NAME="C_DCM2_CLK90_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="221" NAME="C_DCM2_CLK180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="222" NAME="C_DCM2_CLK270_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="223" NAME="C_DCM2_CLKDV_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="224" NAME="C_DCM2_CLKDV180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="225" NAME="C_DCM2_CLK2X_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="226" NAME="C_DCM2_CLK2X180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="227" NAME="C_DCM2_CLKFX_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="228" NAME="C_DCM2_CLKFX180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="229" NAME="C_DCM2_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="230" NAME="C_DCM2_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="231" NAME="C_DCM2_CLKIN_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="232" NAME="C_DCM2_CLKIN_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="233" NAME="C_DCM2_CLKFB_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="234" NAME="C_DCM2_CLKFB_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="235" NAME="C_DCM2_RST_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="236" NAME="C_DCM3_DFS_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="237" NAME="C_DCM3_DLL_FREQUENCY_MODE" VALUE="LOW"/> + <PARAMETER MPD_INDEX="238" NAME="C_DCM3_DUTY_CYCLE_CORRECTION" VALUE="true"/> + <PARAMETER MPD_INDEX="239" NAME="C_DCM3_CLKIN_DIVIDE_BY_2" VALUE="false"/> + <PARAMETER MPD_INDEX="240" NAME="C_DCM3_CLK_FEEDBACK" VALUE="1X"/> + <PARAMETER MPD_INDEX="241" NAME="C_DCM3_CLKOUT_PHASE_SHIFT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="242" NAME="C_DCM3_DSS_MODE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="243" NAME="C_DCM3_STARTUP_WAIT" VALUE="false"/> + <PARAMETER MPD_INDEX="244" NAME="C_DCM3_PHASE_SHIFT" VALUE="0"/> + <PARAMETER MPD_INDEX="245" NAME="C_DCM3_CLKFX_MULTIPLY" VALUE="4"/> + <PARAMETER MPD_INDEX="246" NAME="C_DCM3_CLKFX_DIVIDE" VALUE="1"/> + <PARAMETER MPD_INDEX="247" NAME="C_DCM3_CLKDV_DIVIDE" VALUE="2.000000"/> + <PARAMETER MPD_INDEX="248" NAME="C_DCM3_CLKIN_PERIOD" VALUE="0.000000"/> + <PARAMETER MPD_INDEX="249" NAME="C_DCM3_DESKEW_ADJUST" VALUE="SYSTEM_SYNCHRONOUS"/> + <PARAMETER MPD_INDEX="250" NAME="C_DCM3_CLKIN_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="251" NAME="C_DCM3_CLKFB_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="252" NAME="C_DCM3_CLK0_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="253" NAME="C_DCM3_CLK90_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="254" NAME="C_DCM3_CLK180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="255" NAME="C_DCM3_CLK270_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="256" NAME="C_DCM3_CLKDV_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="257" NAME="C_DCM3_CLKDV180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="258" NAME="C_DCM3_CLK2X_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="259" NAME="C_DCM3_CLK2X180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="260" NAME="C_DCM3_CLKFX_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="261" NAME="C_DCM3_CLKFX180_BUF" VALUE="false"/> + <PARAMETER MPD_INDEX="262" NAME="C_DCM3_EXT_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="263" NAME="C_DCM3_FAMILY" VALUE="virtex5"/> + <PARAMETER MPD_INDEX="264" NAME="C_DCM3_CLKIN_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="265" NAME="C_DCM3_CLKIN_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="266" NAME="C_DCM3_CLKFB_MODULE" VALUE="NONE"/> + <PARAMETER MPD_INDEX="267" NAME="C_DCM3_CLKFB_PORT" VALUE="NONE"/> + <PARAMETER MPD_INDEX="268" NAME="C_DCM3_RST_MODULE" VALUE="NONE"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="269" NAME="C_CLKIN_FREQ" VALUE="100000000"/> + <PARAMETER MPD_INDEX="270" NAME="C_CLKIN_BUF" VALUE="FALSE"/> + <PARAMETER MPD_INDEX="271" NAME="C_CLKFBIN_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="272" NAME="C_CLKFBIN_BUF" VALUE="FALSE"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="273" NAME="C_CLKOUT0_FREQ" VALUE="200000000"/> + <PARAMETER MPD_INDEX="274" NAME="C_CLKOUT0_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="275" NAME="C_CLKOUT0_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="276" NAME="C_CLKOUT0_BUF" VALUE="TRUE"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="277" NAME="C_CLKOUT1_FREQ" VALUE="100000000"/> + <PARAMETER MPD_INDEX="278" NAME="C_CLKOUT1_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="279" NAME="C_CLKOUT1_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="280" NAME="C_CLKOUT1_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="281" NAME="C_CLKOUT2_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="282" NAME="C_CLKOUT2_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="283" NAME="C_CLKOUT2_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="284" NAME="C_CLKOUT2_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="285" NAME="C_CLKOUT3_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="286" NAME="C_CLKOUT3_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="287" NAME="C_CLKOUT3_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="288" NAME="C_CLKOUT3_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="289" NAME="C_CLKOUT4_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="290" NAME="C_CLKOUT4_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="291" NAME="C_CLKOUT4_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="292" NAME="C_CLKOUT4_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="293" NAME="C_CLKOUT5_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="294" NAME="C_CLKOUT5_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="295" NAME="C_CLKOUT5_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="296" NAME="C_CLKOUT5_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="297" NAME="C_CLKOUT6_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="298" NAME="C_CLKOUT6_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="299" NAME="C_CLKOUT6_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="300" NAME="C_CLKOUT6_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="301" NAME="C_CLKOUT7_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="302" NAME="C_CLKOUT7_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="303" NAME="C_CLKOUT7_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="304" NAME="C_CLKOUT7_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="305" NAME="C_CLKOUT8_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="306" NAME="C_CLKOUT8_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="307" NAME="C_CLKOUT8_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="308" NAME="C_CLKOUT8_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="309" NAME="C_CLKOUT9_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="310" NAME="C_CLKOUT9_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="311" NAME="C_CLKOUT9_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="312" NAME="C_CLKOUT9_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="313" NAME="C_CLKOUT10_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="314" NAME="C_CLKOUT10_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="315" NAME="C_CLKOUT10_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="316" NAME="C_CLKOUT10_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="317" NAME="C_CLKOUT11_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="318" NAME="C_CLKOUT11_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="319" NAME="C_CLKOUT11_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="320" NAME="C_CLKOUT11_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="321" NAME="C_CLKOUT12_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="322" NAME="C_CLKOUT12_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="323" NAME="C_CLKOUT12_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="324" NAME="C_CLKOUT12_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="325" NAME="C_CLKOUT13_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="326" NAME="C_CLKOUT13_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="327" NAME="C_CLKOUT13_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="328" NAME="C_CLKOUT13_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="329" NAME="C_CLKOUT14_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="330" NAME="C_CLKOUT14_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="331" NAME="C_CLKOUT14_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="332" NAME="C_CLKOUT14_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="333" NAME="C_CLKOUT15_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="334" NAME="C_CLKOUT15_PHASE" VALUE="0"/> + <PARAMETER MPD_INDEX="335" NAME="C_CLKOUT15_GROUP" VALUE="NONE"/> + <PARAMETER MPD_INDEX="336" NAME="C_CLKOUT15_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="337" NAME="C_CLKFBOUT_FREQ" VALUE="0"/> + <PARAMETER MPD_INDEX="338" NAME="C_CLKFBOUT_BUF" VALUE="TRUE"/> + <PARAMETER MPD_INDEX="339" NAME="C_SPEEDGRADE" VALUE="DEFAULT"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="2" NAME="CLKOUT0" SIGIS="CLK" SIGNAME="proc_clk_s"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="3" NAME="CLKOUT1" SIGIS="CLK" SIGNAME="sys_clk_s"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="0" NAME="CLKIN" SIGIS="CLK" SIGNAME="dcm_clk_s"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="20" NAME="LOCKED" SIGNAME="Dcm_all_locked"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="19" NAME="RST" SIGIS="RST" SIGNAME="net_gnd"/> + <PORT DIR="I" ISVALID="FALSE" MPD_INDEX="1" NAME="CLKFBIN" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="4" NAME="CLKOUT2" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="5" NAME="CLKOUT3" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="6" NAME="CLKOUT4" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="7" NAME="CLKOUT5" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="8" NAME="CLKOUT6" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="9" NAME="CLKOUT7" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="10" NAME="CLKOUT8" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="11" NAME="CLKOUT9" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="12" NAME="CLKOUT10" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="13" NAME="CLKOUT11" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="14" NAME="CLKOUT12" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="15" NAME="CLKOUT13" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="16" NAME="CLKOUT14" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="17" NAME="CLKOUT15" SIGIS="CLK" SIGNAME="__NOC__"/> + <PORT DIR="O" ISVALID="FALSE" MPD_INDEX="18" NAME="CLKFBOUT" SIGIS="CLK" SIGNAME="__NOC__"/> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/generic_v1_00_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/proc_sys_reset_v2_00_a/doc/proc_sys_reset.pdf" GROUP="H" HWVERSION="2.00.a" INSTANCE="proc_sys_reset_0" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="10" MODCLASS="PERIPHERAL" MODTYPE="proc_sys_reset" SAV_INDEX="6"> + <DESCRIPTION TYPE="SHORT">Processor System Reset Module</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Reset management module</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_SUBFAMILY" VALUE="lx"/> + <PARAMETER MPD_INDEX="1" NAME="C_EXT_RST_WIDTH" VALUE="4"/> + <PARAMETER MPD_INDEX="2" NAME="C_AUX_RST_WIDTH" VALUE="4"/> + <PARAMETER CHANGEDBY="USER" MPD_INDEX="3" NAME="C_EXT_RESET_HIGH" VALUE="0"/> + <PARAMETER MPD_INDEX="4" NAME="C_AUX_RESET_HIGH" VALUE="1"/> + <PARAMETER MPD_INDEX="5" NAME="C_NUM_BUS_RST" VALUE="1"/> + <PARAMETER MPD_INDEX="6" NAME="C_NUM_PERP_RST" VALUE="1"/> + <PARAMETER MPD_INDEX="7" NAME="C_FAMILY" VALUE="virtex5"/> + <BUSINTERFACE BIFRANK="INITIATOR" BIF_X="1" BIF_Y="0" BUSNAME="ppc_reset_bus" BUSSTD="XIL" BUS_STD="XIL_RESETPPC" MPD_INDEX="0" NAME="RESETPPC0"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="0" NAME="Slowest_sync_clk" SIGIS="CLK" SIGNAME="sys_clk_s"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="10" NAME="Dcm_locked" SIGNAME="Dcm_all_locked"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="1" NAME="Ext_Reset_In" SIGIS="RST" SIGNAME="sys_rst_s"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="18" NAME="Bus_Struct_Reset" SIGIS="RST" SIGNAME="sys_bus_reset" VECFORMULA="[0:C_NUM_BUS_RST-1]"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="19" NAME="Peripheral_Reset" SIGIS="RST" SIGNAME="sys_periph_reset" VECFORMULA="[0:C_NUM_PERP_RST-1]"/> + <PORT DIR="I" MPD_INDEX="2" NAME="Aux_Reset_In" SIGIS="RST" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="3" NAME="MB_Debug_Sys_Rst" SIGIS="RST" SIGNAME="__NOC__"/> + <PORT DIR="I" MPD_INDEX="4" NAME="Core_Reset_Req_0" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="5" NAME="Chip_Reset_Req_0" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="System_Reset_Req_0" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="7" NAME="Core_Reset_Req_1" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="8" NAME="Chip_Reset_Req_1" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="9" NAME="System_Reset_Req_1" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="11" NAME="RstcPPCresetcore_0" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="12" NAME="RstcPPCresetchip_0" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="13" NAME="RstcPPCresetsys_0" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="14" NAME="RstcPPCresetcore_1" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="15" NAME="RstcPPCresetchip_1" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="16" NAME="RstcPPCresetsys_1" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="17" NAME="MB_Reset" SIGIS="RST" SIGNAME="__NOC__"/> + <BUSINTERFACE BIFRANK="INITIATOR" BUSNAME="__NOC__" BUSSTD="XIL" BUS_STD="XIL_RESETPPC" MPD_INDEX="1" NAME="RESETPPC1"/> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/intc_v1_11_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/xps_intc_v1_00_a/doc/xps_intc.pdf" HWVERSION="1.00.a" INSTANCE="xps_intc_0" INTCINDEX="0" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="11" MODCLASS="INTERRUPT_CNTLR" MODTYPE="xps_intc" PROCESSOR="ppc405_0" SAV_INDEX="9"> + <DESCRIPTION TYPE="SHORT">XPS Interrupt Controller</DESCRIPTION> + <DESCRIPTION TYPE="LONG">intc core attached to the PLBV46</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_FAMILY" VALUE="virtex5"/> + <PARAMETER ADDRESS="BASE" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="1" NAME="C_BASEADDR" VALUE="0x81800000"/> + <PARAMETER ADDRESS="HIGH" ADDR_TYPE="REGISTER" CHANGEDBY="USER" MPD_INDEX="2" NAME="C_HIGHADDR" VALUE="0x8180ffff"/> + <PARAMETER MPD_INDEX="3" NAME="C_SPLB_AWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="4" NAME="C_SPLB_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="5" NAME="C_SPLB_P2P" VALUE="0"/> + <PARAMETER MPD_INDEX="6" NAME="C_SPLB_NUM_MASTERS" VALUE="1"/> + <PARAMETER MPD_INDEX="7" NAME="C_SPLB_MID_WIDTH" VALUE="1"/> + <PARAMETER MPD_INDEX="8" NAME="C_SPLB_NATIVE_DWIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="9" NAME="C_SPLB_SUPPORT_BURSTS" VALUE="0"/> + <PARAMETER MPD_INDEX="10" NAME="C_NUM_INTR_INPUTS" VALUE="2"/> + <PARAMETER MPD_INDEX="11" NAME="C_KIND_OF_INTR" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="12" NAME="C_KIND_OF_EDGE" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="13" NAME="C_KIND_OF_LVL" VALUE="0xffffffff"/> + <PARAMETER MPD_INDEX="14" NAME="C_HAS_IPR" VALUE="1"/> + <PARAMETER MPD_INDEX="15" NAME="C_HAS_SIE" VALUE="1"/> + <PARAMETER MPD_INDEX="16" NAME="C_HAS_CIE" VALUE="1"/> + <PARAMETER MPD_INDEX="17" NAME="C_HAS_IVR" VALUE="1"/> + <PARAMETER MPD_INDEX="18" NAME="C_IRQ_ACTIVE" VALUE="1"/> + <BUSINTERFACE BIFRANK="SLAVE" BUSNAME="plb" BUSSTD="PLBV46" BUS_STD="PLBV46" MPD_INDEX="0" NAME="SPLB"/> + <PORT DIR="O" INMHS="TRUE" MPD_INDEX="43" NAME="Irq" SENSITIVITY="EDGE_RISING" SIGIS="INTERRUPT" SIGNAME="EICC405EXTINPUTIRQ"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="42" NAME="Intr" SENSITIVITY="EDGE_RISING" SIGIS="INTERRUPT" SIGNAME="RS232_Uart_Interrupt" VECFORMULA="[(C_NUM_INTR_INPUTS-1):0]"/> + <PORT DIR="I" MPD_INDEX="0" NAME="SPLB_Clk" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="SPLB_Rst" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="2" NAME="PLB_ABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="3" NAME="PLB_PAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="4" NAME="PLB_masterID" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_MID_WIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="5" NAME="PLB_RNW" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="PLB_BE" SIGNAME="__DEF__" VECFORMULA="[0:((C_SPLB_DWIDTH/8)-1)]"/> + <PORT DIR="I" MPD_INDEX="7" NAME="PLB_size" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="8" NAME="PLB_type" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="PLB_wrDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="I" MPD_INDEX="10" NAME="PLB_UABus" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="11" NAME="PLB_SAValid" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="12" NAME="PLB_rdPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="13" NAME="PLB_wrPrim" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="14" NAME="PLB_abort" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="15" NAME="PLB_busLock" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="16" NAME="PLB_MSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="17" NAME="PLB_lockErr" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="18" NAME="PLB_wrBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="19" NAME="PLB_rdBurst" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="20" NAME="PLB_wrPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="21" NAME="PLB_rdPendReq" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="22" NAME="PLB_wrPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="23" NAME="PLB_rdPendPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="24" NAME="PLB_reqPri" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="I" MPD_INDEX="25" NAME="PLB_TAttribute" SIGNAME="__DEF__" VECFORMULA="[0:15]"/> + <PORT DIR="O" MPD_INDEX="26" NAME="Sl_addrAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="Sl_SSize" SIGNAME="__DEF__" VECFORMULA="[0:1]"/> + <PORT DIR="O" MPD_INDEX="28" NAME="Sl_wait" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="Sl_rearbitrate" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="Sl_wrDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="Sl_wrComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="Sl_rdDBus" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_DWIDTH-1)]"/> + <PORT DIR="O" MPD_INDEX="33" NAME="Sl_rdDAck" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="34" NAME="Sl_rdComp" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="35" NAME="Sl_MBusy" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="36" NAME="Sl_MWrErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="37" NAME="Sl_MRdErr" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="38" NAME="Sl_wrBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="39" NAME="Sl_rdWdAddr" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="40" NAME="Sl_rdBTerm" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="41" NAME="Sl_MIRQ" SIGNAME="__DEF__" VECFORMULA="[0:(C_SPLB_NUM_MASTERS-1)]"/> + <INTERRUPTSRCS> + <INTRSRC INSTANCE="RS232_Uart" PRIORITY="0" SIGNAME="RS232_Uart_Interrupt"/> + </INTERRUPTSRCS> + <MEMORYMAP> + <MEMRANGE BASE="0x81800000" BASENAME="C_BASEADDR" BASEVALUE="2172649472" HIGH="0x8180ffff" HIGHNAME="C_HIGHADDR" HIGHVALUE="2172715007" MINSIZE="0x20" SIZE="65536" SIZEABRV="64K"> + <MEMBUSINTERFACES> + <MEMBUSINTERFACE NAME="SPLB"/> + </MEMBUSINTERFACES> + </MEMRANGE> + </MEMORYMAP> + </MODULE> + <MODULE BUSSTD="FCB" BUS_STD="FCB" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/fcb_v10_v1_00_a/doc/fcb_v10.pdf" HWVERSION="1.00.a" INSTANCE="fcb_v10_0" IPTYPE="BUS" IS_PLACED="TRUE" MHS_INDEX="12" MODCLASS="BUS" MODTYPE="fcb_v10" SAV_INDEX="1"> + <DESCRIPTION TYPE="SHORT">Fabric Co-processor Bus (FCB)</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Fabric Co-processor Bus (FCB) connects one or more FPGA fabric accelerator slaves to the Auxiliary Processor Unit (APU) controller in a Virtex-4 PowerPC 405.</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_FCB_NUM_MASTERS" VALUE="1"/> + <PARAMETER MPD_INDEX="1" NAME="C_FCB_NUM_SLAVES" VALUE="1"/> + <PARAMETER MPD_INDEX="2" NAME="C_DATA_WIDTH" VALUE="32"/> + <PARAMETER MPD_INDEX="3" NAME="C_EXT_RESET_HIGH" VALUE="1"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="0" NAME="FCB_CLK" SIGIS="CLK" SIGNAME="proc_clk_s"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="1" NAME="SYS_RST" SIGIS="RST" SIGNAME="sys_bus_reset"/> + <PORT DIR="O" MPD_INDEX="2" NAME="FCB_RST" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="3" NAME="M_DECODED" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="4" NAME="M_DECUDI" SIGNAME="__DEF__" VECFORMULA="[0:((3*C_FCB_NUM_MASTERS)-1)]"/> + <PORT DIR="I" MPD_INDEX="5" NAME="M_DECUDIVALID" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="6" NAME="M_ENDIAN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="7" NAME="M_FLUSH" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="8" NAME="M_INSTRUCTION" SIGNAME="__DEF__" VECFORMULA="[0:((C_DATA_WIDTH*C_FCB_NUM_MASTERS)-1)]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="M_INSTRVALID" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="10" NAME="M_LOADBYTEEN" SIGNAME="__DEF__" VECFORMULA="[0:((C_DATA_WIDTH/8*C_FCB_NUM_MASTERS)-1)]"/> + <PORT DIR="I" MPD_INDEX="11" NAME="M_LOADDATA" SIGNAME="__DEF__" VECFORMULA="[0:((C_DATA_WIDTH*C_FCB_NUM_MASTERS)-1)]"/> + <PORT DIR="I" MPD_INDEX="12" NAME="M_LOADDVALID" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="13" NAME="M_OPERANDVALID" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="14" NAME="M_RADATA" SIGNAME="__DEF__" VECFORMULA="[0:((C_DATA_WIDTH*C_FCB_NUM_MASTERS)-1)]"/> + <PORT DIR="I" MPD_INDEX="15" NAME="M_RBDATA" SIGNAME="__DEF__" VECFORMULA="[0:((C_DATA_WIDTH*C_FCB_NUM_MASTERS)-1)]"/> + <PORT DIR="I" MPD_INDEX="16" NAME="M_WRITEBACKOK" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="I" MPD_INDEX="17" NAME="M_XERCA" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_MASTERS-1)]"/> + <PORT DIR="O" MPD_INDEX="18" NAME="FCB_CR" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="19" NAME="FCB_DCDCREN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="20" NAME="FCB_DCDFORCEALIGN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="21" NAME="FCB_DCDFORCEBESTEERING" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="22" NAME="FCB_DCDFPUOP" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="23" NAME="FCB_DCDGPRWRITE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="24" NAME="FCB_DCDLDSTBYTE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="25" NAME="FCB_DCDLDSTDW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="26" NAME="FCB_DCDLDSTHW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="FCB_DCDLDSTQW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="28" NAME="FCB_DCDLDSTWD" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="FCB_DCDLOAD" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="FCB_DCDPRIVOP" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="FCB_DCDRAEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="FCB_DCDRBEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="33" NAME="FCB_DCDSTORE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="34" NAME="FCB_DCDTRAPBE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="35" NAME="FCB_DCDTRAPLE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="36" NAME="FCB_DCDUPDATE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="37" NAME="FCB_DCDXERCAEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="38" NAME="FCB_DCDXEROVEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="39" NAME="FCB_DECODEBUSY" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="40" NAME="FCB_DONE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="41" NAME="FCB_EXCEPTION" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="42" NAME="FCB_EXEBLOCKINGMCO" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="43" NAME="FCB_EXECRFIELD" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="44" NAME="FCB_EXENONBLOCKINGMCO" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="45" NAME="FCB_INSTRACK" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="46" NAME="FCB_LOADWAIT" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="47" NAME="FCB_RESULT" SIGNAME="__DEF__" VECFORMULA="[0:C_DATA_WIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="48" NAME="FCB_RESULTVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="49" NAME="FCB_SLEEPNOTREADY" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="50" NAME="FCB_FCM_XERCA" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="51" NAME="FCB_XEROV" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="52" NAME="FCB_DECODED" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="53" NAME="FCB_DECUDI" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="54" NAME="FCB_DECUDIVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="55" NAME="FCB_ENDIAN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="56" NAME="FCB_FLUSH" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="57" NAME="FCB_INSTRUCTION" SIGNAME="__DEF__" VECFORMULA="[0:C_DATA_WIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="58" NAME="FCB_INSTRVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="59" NAME="FCB_LOADBYTEEN" SIGNAME="__DEF__" VECFORMULA="[0:C_DATA_WIDTH/8-1]"/> + <PORT DIR="O" MPD_INDEX="60" NAME="FCB_LOADDATA" SIGNAME="__DEF__" VECFORMULA="[0:C_DATA_WIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="61" NAME="FCB_LOADDVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="62" NAME="FCB_OPERANDVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="63" NAME="FCB_RADATA" SIGNAME="__DEF__" VECFORMULA="[0:C_DATA_WIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="64" NAME="FCB_RBDATA" SIGNAME="__DEF__" VECFORMULA="[0:C_DATA_WIDTH-1]"/> + <PORT DIR="O" MPD_INDEX="65" NAME="FCB_WRITEBACKOK" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="66" NAME="FCB_APU_XERCA" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="67" NAME="FCB_ABORTDECODE" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="68" NAME="Sl_CR" SIGNAME="__DEF__" VECFORMULA="[0:((4*C_FCB_NUM_SLAVES)-1)]"/> + <PORT DIR="I" MPD_INDEX="69" NAME="Sl_DCDCREN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="70" NAME="Sl_DCDFORCEALIGN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="71" NAME="Sl_DCDFORCEBESTEERING" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="72" NAME="Sl_DCDFPUOP" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="73" NAME="Sl_DCDGPRWRITE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="74" NAME="Sl_DCDLDSTBYTE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="75" NAME="Sl_DCDLDSTDW" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="76" NAME="Sl_DCDLDSTHW" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="77" NAME="Sl_DCDLDSTQW" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="78" NAME="Sl_DCDLDSTWD" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="79" NAME="Sl_DCDLOAD" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="80" NAME="Sl_DCDPRIVOP" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="81" NAME="Sl_DCDRAEN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="82" NAME="Sl_DCDRBEN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="83" NAME="Sl_DCDSTORE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="84" NAME="Sl_DCDTRAPBE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="85" NAME="Sl_DCDTRAPLE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="86" NAME="Sl_DCDUPDATE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="87" NAME="Sl_DCDXERCAEN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="88" NAME="Sl_DCDXEROVEN" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="89" NAME="Sl_DECODEBUSY" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="90" NAME="Sl_DONE" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="91" NAME="Sl_EXCEPTION" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="92" NAME="Sl_EXEBLOCKINGMCO" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="93" NAME="Sl_EXECRFIELD" SIGNAME="__DEF__" VECFORMULA="[0:((3*C_FCB_NUM_SLAVES)-1)]"/> + <PORT DIR="I" MPD_INDEX="94" NAME="Sl_EXENONBLOCKINGMCO" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="95" NAME="Sl_INSTRACK" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="96" NAME="Sl_LOADWAIT" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="97" NAME="Sl_RESULT" SIGNAME="__DEF__" VECFORMULA="[0:((C_DATA_WIDTH*C_FCB_NUM_SLAVES)-1)]"/> + <PORT DIR="I" MPD_INDEX="98" NAME="Sl_RESULTVALID" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="99" NAME="Sl_SLEEPNOTREADY" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="100" NAME="Sl_XERCA" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + <PORT DIR="I" MPD_INDEX="101" NAME="Sl_XEROV" SIGNAME="__DEF__" VECFORMULA="[0:(C_FCB_NUM_SLAVES-1)]"/> + </MODULE> + <MODULE DOC_DRIVER="C:/devtools/Xilinx/10.1/EDK/sw/XilinxProcessorIPLib/drivers/apu_fpu_v2_10_a/doc/html/api/index.html" DOC_IP="C:/devtools/Xilinx/10.1/EDK/hw/XilinxProcessorIPLib/pcores/apu_fpu_v3_10_a/doc/apu_fpu_v3_10_a.pdf" HWVERSION="3.10.a" INSTANCE="apu_fpu_0" IPTYPE="PERIPHERAL" IS_PLACED="TRUE" MHS_INDEX="13" MODCLASS="PERIPHERAL" MODTYPE="apu_fpu" SAV_INDEX="4"> + <DESCRIPTION TYPE="SHORT">APU Floating Point Unit</DESCRIPTION> + <DESCRIPTION TYPE="LONG">Floating Point Unit via Auxilary Processor Unit.</DESCRIPTION> + <PARAMETER MPD_INDEX="0" NAME="C_FULL_FEATURES" VALUE="1"/> + <BUSINTERFACE BIFRANK="SLAVE" BIF_X="1" BIF_Y="0" BUSNAME="fcb_v10_0" BUSSTD="FCB" BUS_STD="FCB" MPD_INDEX="0" NAME="SFCB"/> + <PORT DIR="I" INMHS="TRUE" MPD_INDEX="2" NAME="FPU_CLK" SIGIS="CLK" SIGNAME="sys_clk_s"/> + <PORT DIR="I" MPD_INDEX="0" NAME="FCB_CLK" SIGIS="CLK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="1" NAME="FCB_RST" SIGIS="RST" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="3" NAME="APUFCMDECODED" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="4" NAME="APUFCMDECUDI" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="I" MPD_INDEX="5" NAME="APUFCMDECUDIVALID" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="6" NAME="APUFCMENDIAN" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="7" NAME="APUFCMFLUSH" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="8" NAME="APUFCMINSTRUCTION" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="9" NAME="APUFCMINSTRVALID" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="10" NAME="APUFCMLOADBYTEEN" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="I" MPD_INDEX="11" NAME="APUFCMLOADDATA" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="12" NAME="APUFCMLOADDVALID" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="13" NAME="APUFCMOPERANDVALID" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="14" NAME="APUFCMRADATA" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="15" NAME="APUFCMRBDATA" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="I" MPD_INDEX="16" NAME="APUFCMWRITEBACKOK" SIGNAME="__DEF__"/> + <PORT DIR="I" MPD_INDEX="17" NAME="APUFCMXERCA" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="18" NAME="FCMAPUCR" SIGNAME="__DEF__" VECFORMULA="[0:3]"/> + <PORT DIR="O" MPD_INDEX="19" NAME="FCMAPUDCDCREN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="20" NAME="FCMAPUDCDFORCEALIGN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="21" NAME="FCMAPUDCDFORCEBESTEERING" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="22" NAME="FCMAPUDCDFPUOP" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="23" NAME="FCMAPUDCDGPRWRITE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="24" NAME="FCMAPUDCDLDSTBYTE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="25" NAME="FCMAPUDCDLDSTDW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="26" NAME="FCMAPUDCDLDSTHW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="27" NAME="FCMAPUDCDLDSTQW" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="28" NAME="FCMAPUDCDLDSTWD" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="29" NAME="FCMAPUDCDLOAD" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="30" NAME="FCMAPUDCDPRIVOP" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="31" NAME="FCMAPUDCDRAEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="32" NAME="FCMAPUDCDRBEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="33" NAME="FCMAPUDCDSTORE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="34" NAME="FCMAPUDCDTRAPBE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="35" NAME="FCMAPUDCDTRAPLE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="36" NAME="FCMAPUDCDUPDATE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="37" NAME="FCMAPUDCDXERCAEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="38" NAME="FCMAPUDCDXEROVEN" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="39" NAME="FCMAPUDECODEBUSY" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="40" NAME="FCMAPUDONE" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="41" NAME="FCMAPUEXCEPTION" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="42" NAME="FCMAPUEXEBLOCKINGMCO" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="43" NAME="FCMAPUEXECRFIELD" SIGNAME="__DEF__" VECFORMULA="[0:2]"/> + <PORT DIR="O" MPD_INDEX="44" NAME="FCMAPUEXENONBLOCKINGMCO" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="45" NAME="FCMAPUINSTRACK" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="46" NAME="FCMAPULOADWAIT" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="47" NAME="FCMAPURESULT" SIGNAME="__DEF__" VECFORMULA="[0:31]"/> + <PORT DIR="O" MPD_INDEX="48" NAME="FCMAPURESULTVALID" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="49" NAME="FCMAPUSLEEPNOTREADY" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="50" NAME="FCMAPUXERCA" SIGNAME="__DEF__"/> + <PORT DIR="O" MPD_INDEX="51" NAME="FCMAPUXEROV" SIGNAME="__DEF__"/> + </MODULE> + </MODULES> + + <EXTERNALPORTS> + <PORT DIR="I" MHS_INDEX="0" NAME="fpga_0_RS232_Uart_RX_pin" SIGNAME="fpga_0_RS232_Uart_RX"/> + <PORT DIR="O" MHS_INDEX="1" NAME="fpga_0_RS232_Uart_TX_pin" SIGNAME="fpga_0_RS232_Uart_TX"/> + <PORT DIR="IO" ENDIAN="BIG" LSB="0" MHS_INDEX="2" MSB="3" NAME="fpga_0_LEDs_4Bit_GPIO_IO_pin" SIGNAME="fpga_0_LEDs_4Bit_GPIO_IO"/> + <PORT DIR="IO" ENDIAN="LITTLE" LSB="0" MHS_INDEX="3" MSB="4" NAME="fpga_0_LEDs_Positions_GPIO_IO_pin" SIGNAME="fpga_0_LEDs_Positions_GPIO_IO"/> + <PORT DIR="I" MHS_INDEX="4" NAME="fpga_0_SysACE_CompactFlash_SysACE_CLK_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_CLK"/> + <PORT DIR="O" ENDIAN="BIG" LSB="6" MHS_INDEX="5" MSB="1" NAME="fpga_0_SysACE_CompactFlash_SysACE_MPA_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_MPA"/> + <PORT DIR="IO" ENDIAN="LITTLE" LSB="15" MHS_INDEX="6" MSB="0" NAME="fpga_0_SysACE_CompactFlash_SysACE_MPD_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_MPD"/> + <PORT DIR="O" MHS_INDEX="7" NAME="fpga_0_SysACE_CompactFlash_SysACE_CEN_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_CEN"/> + <PORT DIR="O" MHS_INDEX="8" NAME="fpga_0_SysACE_CompactFlash_SysACE_OEN_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_OEN"/> + <PORT DIR="O" MHS_INDEX="9" NAME="fpga_0_SysACE_CompactFlash_SysACE_WEN_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_WEN"/> + <PORT DIR="I" MHS_INDEX="10" NAME="fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin" SIGNAME="fpga_0_SysACE_CompactFlash_SysACE_MPIRQ"/> + <PORT DIR="O" ENDIAN="BIG" LSB="9" MHS_INDEX="11" MSB="29" NAME="fpga_0_SRAM_Mem_A_pin" SIGNAME="fpga_0_SRAM_Mem_A"/> + <PORT DIR="O" ENDIAN="LITTLE" LSB="0" MHS_INDEX="12" MSB="3" NAME="fpga_0_SRAM_Mem_BEN_pin" SIGNAME="fpga_0_SRAM_Mem_BEN"/> + <PORT DIR="O" MHS_INDEX="13" NAME="fpga_0_SRAM_Mem_WEN_pin" SIGNAME="fpga_0_SRAM_Mem_WEN"/> + <PORT DIR="IO" ENDIAN="BIG" LSB="0" MHS_INDEX="14" MSB="31" NAME="fpga_0_SRAM_Mem_DQ_pin" SIGNAME="fpga_0_SRAM_Mem_DQ"/> + <PORT DIR="O" ENDIAN="LITTLE" LSB="0" MHS_INDEX="15" MSB="0" NAME="fpga_0_SRAM_Mem_OEN_pin" SIGNAME="fpga_0_SRAM_Mem_OEN"/> + <PORT DIR="O" ENDIAN="BIG" LSB="0" MHS_INDEX="16" MSB="0" NAME="fpga_0_SRAM_Mem_CEN_pin" SIGNAME="fpga_0_SRAM_Mem_CEN"/> + <PORT DIR="O" MHS_INDEX="17" NAME="fpga_0_SRAM_Mem_ADV_LDN_pin" SIGNAME="fpga_0_SRAM_Mem_ADV_LDN"/> + <PORT DIR="O" MHS_INDEX="18" NAME="fpga_0_SRAM_CLOCK" SIGNAME="sys_clk_s"/> + <PORT CLKFREQUENCY="100000000" DIR="I" MHS_INDEX="19" NAME="sys_clk_pin" SIGIS="CLK" SIGNAME="dcm_clk_s"/> + <PORT DIR="I" MHS_INDEX="20" NAME="sys_rst_pin" RSTPOLARITY="0" SIGIS="RST" SIGNAME="sys_rst_s"/> + </EXTERNALPORTS> + + <BLKDSHAPES STACK_HORIZ_WIDTH="1"> + <PROCSHAPES> + <MODULE BIFS_H="3" BIFS_W="2" INSTANCE="ppc405_0" IS_ABVSBS="TRUE" SHAPE_VERTI_INDEX="3" STACK_HORIZ_INDEX="0"/> + </PROCSHAPES> + <IPBUCKET MODS_H="1" MODS_W="2"> + <MODULE INSTANCE="SRAM_util_bus_split_0" IS_PLACED="TRUE" MODTYPE="util_bus_split"/> + <MODULE INSTANCE="clock_generator_0" IS_PLACED="TRUE" MODTYPE="clock_generator"/> + </IPBUCKET> + <SBSSHAPES> + <MODULE INSTANCE="plb"/> + </SBSSHAPES> + <SBSBUCKETS> + <SBSBUCKET BUSINDEX="0" BUSNAME="plb" BUSSTD="PLBV46" IS_BLWSBS="TRUE" MODS_H="2" MODS_W="3" SHAPE_VERTI_INDEX="4" STACK_HORIZ_INDEX="0"> + <MODULE INSTANCE="RS232_Uart" MODTYPE="xps_uartlite"/> + <MODULE INSTANCE="LEDs_4Bit" MODTYPE="xps_gpio"/> + <MODULE INSTANCE="LEDs_Positions" MODTYPE="xps_gpio"/> + <MODULE INSTANCE="SysACE_CompactFlash" MODTYPE="xps_sysace"/> + <MODULE INSTANCE="SRAM" MODTYPE="xps_mch_emc"/> + <MODULE INSTANCE="xps_intc_0" MODTYPE="xps_intc"/> + </SBSBUCKET> + </SBSBUCKETS> + <P2PSHAPES> + <MODULE INSTANCE="fcb_v10_0"/> + </P2PSHAPES> + <CMPLXSHAPES> + <CMPLXSHAPE IS_ABVSBS="TRUE" MODCLASS="PERIPHERAL" MODS_H="1" MODS_W="1" SHAPE_ID="0" SHAPE_VERTI_INDEX="1" STACK_HORIZ_INDEX="0"> + <MODULE BIFS_H="1" BIFS_W="2" INSTANCE="jtagppc_0" MODCLASS="PERIPHERAL"/> + </CMPLXSHAPE> + <CMPLXSHAPE IS_ABVSBS="TRUE" MODCLASS="PERIPHERAL" MODS_H="1" MODS_W="1" SHAPE_ID="1" SHAPE_VERTI_INDEX="0" STACK_HORIZ_INDEX="0"> + <MODULE BIFS_H="1" BIFS_W="2" INSTANCE="proc_sys_reset_0" MODCLASS="PERIPHERAL"/> + </CMPLXSHAPE> + <CMPLXSHAPE IS_ABVSBS="TRUE" MODCLASS="PERIPHERAL" MODS_H="1" MODS_W="1" SHAPE_ID="2" SHAPE_VERTI_INDEX="2" STACK_HORIZ_INDEX="0"> + <MODULE BIFS_H="1" BIFS_W="2" INSTANCE="apu_fpu_0" MODCLASS="PERIPHERAL"/> + </CMPLXSHAPE> + </CMPLXSHAPES> + <BCLANESPACES> + <BCLANESPACE BUSLANES_W="4" EAST="0"> + <BUSCONNLANE BUSLANE_X="2" BUSNAME="jtagppc_0_0" BUSSTD="XIL" IS_ABVSBS="TRUE" ORIENTED="EAST" STACK_HORIZ_INDEX="0"> + <BUSCONN BIF_Y="0" BUSINTERFACE="JTAGPPC" INSTANCE="ppc405_0" IS_PROCCONN="TRUE"/> + <BUSCONN BUSINTERFACE="JTAGPPC0" BUSSTD="XIL" INSTANCE="jtagppc_0"/> + </BUSCONNLANE> + <BUSCONNLANE BUSLANE_X="2" BUSNAME="plb" BUSSTD="PLBV46" IS_BLWSBS="TRUE" IS_SBSCONN="TRUE" ORIENTED="EAST" STACK_HORIZ_INDEX="0"> + <BUSCONN BIF_Y="2" BUSINTERFACE="DPLB0" INSTANCE="ppc405_0" IS_PROCCONN="TRUE"/> + </BUSCONNLANE> + <BUSCONNLANE BUSLANE_X="1" BUSNAME="plb" BUSSTD="PLBV46" IS_BKTCONN="TRUE" IS_BLWSBS="TRUE" ORIENTED="EAST" STACK_HORIZ_INDEX="0"> + <BUSCONN BIFRANK="SLAVE" BUSINTERFACE="SPLBV46"/> + </BUSCONNLANE> + </BCLANESPACE> + <BCLANESPACE BUSLANES_W="4" WEST="0"> + <BUSCONNLANE BUSLANE_X="1" BUSNAME="plb" BUSSTD="PLBV46" IS_BLWSBS="TRUE" IS_SBSCONN="TRUE" ORIENTED="WEST" STACK_HORIZ_INDEX="0"> + <BUSCONN BIF_Y="2" BUSINTERFACE="IPLB0" INSTANCE="ppc405_0" IS_PROCCONN="TRUE"/> + </BUSCONNLANE> + <BUSCONNLANE BUSLANE_X="2" BUSNAME="ppc_reset_bus" BUSSTD="XIL" IS_ABVSBS="TRUE" ORIENTED="WEST" STACK_HORIZ_INDEX="0"> + <BUSCONN BIF_Y="1" BUSINTERFACE="RESETPPC" INSTANCE="ppc405_0" IS_PROCCONN="TRUE"/> + <BUSCONN BUSINTERFACE="RESETPPC0" BUSSTD="XIL" INSTANCE="proc_sys_reset_0"/> + </BUSCONNLANE> + <BUSCONNLANE BUSLANE_X="1" BUSNAME="fcb_v10_0" BUSSTD="FCB" IS_ABVSBS="TRUE" ORIENTED="WEST" STACK_HORIZ_INDEX="0"> + <BUSCONN BIF_Y="0" BUSINTERFACE="MFCB" INSTANCE="ppc405_0" IS_PROCCONN="TRUE"/> + <BUSCONN BUSINTERFACE="SFCB" BUSSTD="FCB" INSTANCE="apu_fpu_0"/> + </BUSCONNLANE> + </BCLANESPACE> + </BCLANESPACES> + </BLKDSHAPES> + +</EDKSYSTEM>
\ No newline at end of file diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/bitinit.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/bitinit.opt new file mode 100644 index 00000000..3645236a --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/bitinit.opt @@ -0,0 +1 @@ + -pe ppc405_0 $(PPC405_0_BOOTLOOP)
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/libgen.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/libgen.opt new file mode 100644 index 00000000..77b15484 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/libgen.opt @@ -0,0 +1 @@ + -p virtex4
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/platgen.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/platgen.opt new file mode 100644 index 00000000..25299b7d --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/platgen.opt @@ -0,0 +1,2 @@ + -p xc4vfx12ff668-10 -lang vhdl +
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/rtosdemo_compiler.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/rtosdemo_compiler.opt new file mode 100644 index 00000000..2979e432 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/rtosdemo_compiler.opt @@ -0,0 +1,20 @@ +ppc405_0
+RTOSDEMO_SOURCES = RTOSDemo/../../Common/Minimal/BlockQ.c RTOSDemo/../../Common/Minimal/blocktim.c RTOSDemo/../../Common/Minimal/comtest.c RTOSDemo/../../Common/Minimal/countsem.c RTOSDemo/../../Common/Minimal/death.c RTOSDemo/../../Common/Minimal/dynamic.c RTOSDemo/../../Common/Minimal/flash.c RTOSDemo/../../Common/Minimal/GenQTest.c RTOSDemo/../../Common/Minimal/integer.c RTOSDemo/../../Common/Minimal/QPeek.c RTOSDemo/../../Common/Minimal/recmutex.c RTOSDemo/../../Common/Minimal/semtest.c RTOSDemo/../../../Source/tasks.c RTOSDemo/../../../Source/list.c RTOSDemo/../../../Source/queue.c RTOSDemo/../../../Source/portable/GCC/PPC405_Xilinx/port.c RTOSDemo/main.c RTOSDemo/serial/serial.c RTOSDemo/partest/partest.c RTOSDemo/../../../Source/portable/GCC/PPC405_Xilinx/portasm.S RTOSDemo/../../../Source/portable/MemMang/heap_2.c RTOSDemo/flop/flop.c RTOSDemo/flop/flop-reg-test.c
+RTOSDEMO_HEADERS = RTOSDemo/FreeRTOSConfig.h
+RTOSDEMO_CC = powerpc-eabi-gcc
+RTOSDEMO_CC_SIZE = powerpc-eabi-size
+RTOSDEMO_CC_OPT = -O0
+RTOSDEMO_CFLAGS = -I./RTOSDemo/flop -I../../Source/portable/GCC/PPC405_Xilinx -I./ppc405_0/include/ -IRTOSDemo/ -I. -I./RTOSDemo/ -I../Common/include/ -I../../Source/include/ -I./ppc405_0/include/ -I./ppc405_0/include -D GCC_PPC405 -mregnames -Wextra
+RTOSDEMO_CC_SEARCH = # -B
+RTOSDEMO_LIBPATH = -L./ppc405_0/lib/ # -L
+RTOSDEMO_INCLUDES = -I./ppc405_0/include/ -IRTOSDemo/ # -I
+RTOSDEMO_LFLAGS = # -l
+RTOSDEMO_LINKER_SCRIPT = RTOSDemo/RTOSDemo_linker_script.ld
+RTOSDEMO_CC_DEBUG_FLAG = -g
+RTOSDEMO_CC_PROFILE_FLAG = # -pg
+RTOSDEMO_CC_GLOBPTR_FLAG= # -msdata=eabi
+RTOSDEMO_CC_INFERRED_FLAGS= -mfpu=sp_full
+RTOSDEMO_CC_START_ADDR_FLAG= # # -Wl,-defsym -Wl,_START_ADDR=
+RTOSDEMO_CC_STACK_SIZE_FLAG= # # -Wl,-defsym -Wl,_STACK_SIZE=
+RTOSDEMO_CC_HEAP_SIZE_FLAG= # # -Wl,-defsym -Wl,_HEAP_SIZE=
+ $(RTOSDEMO_CC_INFERRED_FLAGS) \
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/simgen.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/simgen.opt new file mode 100644 index 00000000..970a4ea8 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/simgen.opt @@ -0,0 +1 @@ + -p virtex4 -lang vhdl -pe ppc405_0 $(PPC405_0_BOOTLOOP) -s mti -X C:/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/ -E C:/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/system.gui b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/system.gui new file mode 100644 index 00000000..9ccbebea --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/system.gui @@ -0,0 +1,101 @@ + +<PRO_GUISETTING VIEWSTATUS="BIFS_TREE"> + + <GUISETTING HSCROLL="0" ID="BIFS_TREE" SPSIZE1="88" SPSIZE2="365" VSCROLL="0"> + + <COLHDR INDEX="0" NAME="Name" VISIBLE="TRUE" WIDTH="151"/> + + <COLHDR INDEX="4" NAME="Bus Connection" VISIBLE="TRUE" WIDTH="156"/> + + <COLHDR INDEX="6" NAME="Bus Standard" VISIBLE="FALSE" WIDTH="0"/> + + <COLHDR INDEX="1" NAME="IP Type" VISIBLE="TRUE" WIDTH="93"/> + + <COLHDR INDEX="2" NAME="IP Version" VISIBLE="TRUE" WIDTH="104"/> + + <COLHDR INDEX="5" NAME="Mastership" VISIBLE="FALSE" WIDTH="0"/> + + <COLHDR INDEX="3" NAME="IP CLASSIFICATION" VISIBLE="FALSE" WIDTH="0"/> + + <EXPANDED/> + +</GUISETTING> + <GUISETTING HSCROLL="0" ID="PORTS_TREE" VSCROLL="0"> + + <COLHDR INDEX="0" NAME="Name" VISIBLE="TRUE" WIDTH="200"/> + + <COLHDR INDEX="1" NAME="Net" VISIBLE="TRUE" WIDTH="200"/> + + <COLHDR INDEX="2" NAME="Direction" VISIBLE="TRUE" WIDTH="98"/> + + <COLHDR INDEX="4" NAME="Range" VISIBLE="TRUE" WIDTH="200"/> + + <COLHDR INDEX="3" NAME="Class" VISIBLE="TRUE" WIDTH="81"/> + + <COLHDR INDEX="5" NAME="Frequency" VISIBLE="TRUE" WIDTH="106"/> + + <COLHDR INDEX="6" NAME="Reset Polarity" VISIBLE="TRUE" WIDTH="121"/> + + <COLHDR INDEX="9" NAME="Sensitivity" VISIBLE="TRUE" WIDTH="103"/> + + <COLHDR INDEX="7" NAME="IP Type" VISIBLE="TRUE" WIDTH="93"/> + + <COLHDR INDEX="8" NAME="IP Version" VISIBLE="FALSE" WIDTH="0"/> + + <EXPANDED/> + +</GUISETTING> + <GUISETTING HSCROLL="0" ID="ADDRESSES_TREE" VSCROLL="0"> + + <COLHDR INDEX="0" NAME="Name" VISIBLE="TRUE" WIDTH="153"/> + + <COLHDR INDEX="3" NAME="Base Address" VISIBLE="TRUE" WIDTH="121"/> + + <COLHDR INDEX="4" NAME="High Address" VISIBLE="TRUE" WIDTH="119"/> + + <COLHDR INDEX="5" NAME="Size" VISIBLE="TRUE" WIDTH="76"/> + + <COLHDR INDEX="7" NAME="Bus Interface(s)" VISIBLE="TRUE" WIDTH="130"/> + + <COLHDR INDEX="10" NAME="Bus Connection" VISIBLE="TRUE" WIDTH="131"/> + + <COLHDR INDEX="6" NAME="Lock" VISIBLE="TRUE" WIDTH="80"/> + + <COLHDR INDEX="9" NAME="ICache" VISIBLE="TRUE" WIDTH="90"/> + + <COLHDR INDEX="8" NAME="DCache" VISIBLE="TRUE" WIDTH="95"/> + + <COLHDR INDEX="1" NAME="IP Type" VISIBLE="TRUE" WIDTH="93"/> + + <COLHDR INDEX="2" NAME="IP Version" VISIBLE="TRUE" WIDTH="104"/> + + <EXPANDED/> + +</GUISETTING> + <GUISETTING COLSORT="0" HSCROLL="0" ID="ADDRESSES_FLAT" SORTORE="1" VSCROLL="0"> + + <COLHDR INDEX="11" NAME="Instance" VISIBLE="TRUE" WIDTH="115"/> + + <COLHDR INDEX="0" NAME="Name" VISIBLE="TRUE" WIDTH="153"/> + + <COLHDR INDEX="3" NAME="Base Address" VISIBLE="TRUE" WIDTH="121"/> + + <COLHDR INDEX="4" NAME="High Address" VISIBLE="TRUE" WIDTH="119"/> + + <COLHDR INDEX="5" NAME="Size" VISIBLE="TRUE" WIDTH="76"/> + + <COLHDR INDEX="7" NAME="Bus Interface(s)" VISIBLE="TRUE" WIDTH="130"/> + + <COLHDR INDEX="10" NAME="Bus Connection" VISIBLE="TRUE" WIDTH="131"/> + + <COLHDR INDEX="6" NAME="Lock" VISIBLE="TRUE" WIDTH="80"/> + + <COLHDR INDEX="9" NAME="ICache" VISIBLE="TRUE" WIDTH="90"/> + + <COLHDR INDEX="8" NAME="DCache" VISIBLE="TRUE" WIDTH="95"/> + + <COLHDR INDEX="1" NAME="IP Type" VISIBLE="TRUE" WIDTH="93"/> + + <COLHDR INDEX="2" NAME="IP Version" VISIBLE="TRUE" WIDTH="104"/> + +</GUISETTING></PRO_GUISETTING>
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/system_routed b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/system_routed new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/system_routed diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/testapp_peripheral_compiler.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/testapp_peripheral_compiler.opt new file mode 100644 index 00000000..39ff0ed0 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/testapp_peripheral_compiler.opt @@ -0,0 +1,20 @@ +ppc405_0
+TESTAPP_PERIPHERAL_SOURCES = /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/TestApp_Peripheral.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/xintc_tapp_example.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/xuartlite_selftest_example.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/xuartlite_intr_tapp_example.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/xgpio_tapp_example.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/xsysace_selftest_example.c
+TESTAPP_PERIPHERAL_HEADERS = /cygdrive/c//E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/intc_header.h /cygdrive/c//E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/uartlite_header.h /cygdrive/c//E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/uartlite_intr_header.h /cygdrive/c//E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/gpio_header.h /cygdrive/c//E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/sysace_header.h
+TESTAPP_PERIPHERAL_CC = powerpc-eabi-gcc
+TESTAPP_PERIPHERAL_CC_SIZE = powerpc-eabi-size
+TESTAPP_PERIPHERAL_CC_OPT = -O0
+TESTAPP_PERIPHERAL_CFLAGS =
+TESTAPP_PERIPHERAL_CC_SEARCH = # -B
+TESTAPP_PERIPHERAL_LIBPATH = -L./ppc405_0/lib/ # -L
+TESTAPP_PERIPHERAL_INCLUDES = -I./ppc405_0/include/ -ITestApp_Peripheral/src/ # -I
+TESTAPP_PERIPHERAL_LFLAGS = # -l
+TESTAPP_PERIPHERAL_LINKER_SCRIPT = /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy2/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/TestApp_Peripheral/src/TestApp_Peripheral_LinkScr.ld
+TESTAPP_PERIPHERAL_CC_DEBUG_FLAG = -g
+TESTAPP_PERIPHERAL_CC_PROFILE_FLAG = # -pg
+TESTAPP_PERIPHERAL_CC_GLOBPTR_FLAG= # -msdata=eabi
+TESTAPP_PERIPHERAL_CC_INFERRED_FLAGS= -mfpu=sp_full
+TESTAPP_PERIPHERAL_CC_START_ADDR_FLAG= # # -Wl,-defsym -Wl,_START_ADDR=
+TESTAPP_PERIPHERAL_CC_STACK_SIZE_FLAG= # # -Wl,-defsym -Wl,_STACK_SIZE=
+TESTAPP_PERIPHERAL_CC_HEAP_SIZE_FLAG= # # -Wl,-defsym -Wl,_HEAP_SIZE=
+ $(TESTAPP_PERIPHERAL_CC_INFERRED_FLAGS) \
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/vpgen.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/vpgen.opt new file mode 100644 index 00000000..8ea8f664 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/vpgen.opt @@ -0,0 +1 @@ + -p xc4vfx12ff668-10
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/xplorer.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/xplorer.opt new file mode 100644 index 00000000..37e5b119 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/xplorer.opt @@ -0,0 +1 @@ +-device xc4vfx12ff668-10data/system.ucf7 0
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/xpsxflow.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/xpsxflow.opt new file mode 100644 index 00000000..33391f03 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/__xps/xpsxflow.opt @@ -0,0 +1 @@ +-device xc4vfx12ff668-10data/system.ucf 0
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/svg10.dtd b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/svg10.dtd new file mode 100644 index 00000000..110f5ced --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/svg10.dtd @@ -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/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.css b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.css new file mode 100644 index 00000000..bde7995d --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.css @@ -0,0 +1,329 @@ + 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.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; + } + + 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; + } + + + 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.bciplabel { + fill: #000000; + stroke: none; + font-size: 6pt; + font-style: italic; + font-weight: bold; + text-anchor: middle; + font-family: Courier Arial Helvetica sans-serif; + } + + text.bciptype { + fill: #AA0017; + stroke: none; + font-size: 6pt; + font-style: italic; + font-weight: bold; + text-anchor: middle; + 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; + } + diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.html b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.html new file mode 100644 index 00000000..0f88d622 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.html @@ -0,0 +1,229 @@ +<HTML xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink"> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<TITLE>Block Diagram</TITLE> +</HEAD> +<BODY class="main_body"> +<EMBED src="system.svg" width="1032" height="1531" type="image/svg+xml"></EMBED><BR><BR><TABLE BGCOLOR="#000000" WIDTH="850" COLS="8" cellspacing="1" cellpadding="1" border="0"> +<TD COLSPAN="8" ALIGN="middle" BGCOLOR="#810017"><SPAN style="color:#FFFFFF; font: bold 9px Verdana,Arial,Helvetica,sans-serif">EXTERNAL PORTS</SPAN></TD> +<TR></TR> +<TD COLSPAN="8" ALIGN="middle" bgcolor="#FFFFFF"><SPAN style="color:#2233FF; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> + These are the external ports defined in the MHS file. + </SPAN></TD> +<TR></TR> +<TD COLSPAN="8" ALIGN="left" bgcolor="#FFFFFF"> +<SPAN style="color:#2233FF; font: bold 9px Verdana,Arial,Helvetica,sans-serif">Attributes Key</SPAN><BR><SPAN style="color:#000000; font: italic 9px Verdana,Arial,Helvetica,sans-serif">The attributes are obtained from the SIGIS and IOB_STATE parameters set on the PORT in the MHS file </SPAN><BR><SPAN style="color:#55FF55; font: bold 12px Verdana,Arial,Helvetica,sans-serif">CLK</SPAN><SPAN style="color:#2233FF; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> indicates Clock ports, (SIGIS = CLK) </SPAN><BR><SPAN style="color:#5555FF; font: bold 12px Verdana,Arial,Helvetica,sans-serif">INTR</SPAN><SPAN style="color:#2233FF; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> indicates Interrupt ports,(SIGIS = INTR) </SPAN><BR><SPAN style="color:#FFCC00; font: bold 12px Verdana,Arial,Helvetica,sans-serif">RESET</SPAN><SPAN style="color:#2233FF; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> indicates Reset ports, (SIGIS = RST) </SPAN><BR><SPAN style="color:#FF5555; font: bold 12px Verdana,Arial,Helvetica,sans-serif">BUF or REG</SPAN><SPAN style="color:#2233FF; font: bold 9px Verdana,Arial,Helvetica,sans-serif"> Indicates ports that instantiate or infer IOB primitives, (IOB_STATE = BUF or REG) </SPAN> +</TD> +<TR></TR> +<TD COLSPAN="3" WIDTH="49%"><TABLE BGCOLOR="#000000" WIDTH="100%" COLS="9" cellspacing="1" cellpadding="0" border="0"> +<TD COLSPAN="1" width="5" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">#</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TD> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">DIR</SPAN></TD> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">[LSB:MSB]</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIG</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">ATTRIBUTES</SPAN></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_RS232_Uart_RX_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">I</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_RS232_Uart_RX</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_RS232_Uart_TX_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_RS232_Uart_TX</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_LEDs_4Bit_GPIO_IO_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">IO</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">0:3</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_LEDs_4Bit_GPIO_IO</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_LEDs_Positions_GPIO_IO_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">IO</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">0:4</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_LEDs_Positions_GPIO_IO</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_CLK_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">I</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_CLK</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_MPA_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">6:1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_MPA</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_MPD_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">IO</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">15:0</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_MPD</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_CEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_CEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_OEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_OEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_WEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_WEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">I</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SysACE_CompactFlash_SysACE_MPIRQ</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +</TABLE></TD> +<TD COLSPAN="1" WIDTH="2%" BGCOLOR="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> </SPAN></TD> +<TD COLSPAN="3" WIDTH="49%"><TABLE BGCOLOR="#000000" WIDTH="100%" COLS="9" cellspacing="1" cellpadding="0" border="0"> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">#</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">NAME</SPAN></TD> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">DIR</SPAN></TD> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">[LSB:MSB]</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">SIG</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#BBBBBB"><SPAN style="color:#810017; font: bold 10px Verdana,Arial,Helvetica,sans-serif">ATTRIBUTES</SPAN></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_A_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">9:29</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_A</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_BEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">0:3</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_BEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_WEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_WEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_DQ_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">IO</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">0:31</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_DQ</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_OEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">0:0</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_OEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_CEN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">0:0</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_CEN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_ADV_LDN_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_Mem_ADV_LDN</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">fpga_0_SRAM_CLOCK</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">O</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">sys_clk_s</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">sys_clk_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">I</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">dcm_clk_s</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#33CC33; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> CLK </SPAN></TD> +<TR></TR> +<TD COLSPAN="1" width="5%" align="left" bgcolor="#FFFFFF"> +<SPAN style="color:#000000; font: bold 14px Verdana,Arial,Helvetica,sans-serif"></SPAN><SPAN style="color:#000000; vertical-align: super; font: bold 10px Arial,Helvetica,sans-serif"></SPAN> +</TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">sys_rst_pin</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">I</SPAN></TD> +<TD COLSPAN="1" width="5%" align="middle" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: bold 10px Verdana,Arial,Helvetica,sans-serif">1</SPAN></TD> +<TD COLSPAN="2" width="30%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#000000; font: normal 12px Verdana,Arial,Helvetica,sans-serif">sys_rst_s</SPAN></TD> +<TD COLSPAN="2" width="25%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#FFCC00; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> RESET </SPAN></TD> +<TR></TR> +<TD COLSPAN="9" WIDTH="100%" align="left" bgcolor="#FFFFFF"><SPAN style="color:#FFFFFF; font: bold 10px Verdana,Arial,Helvetica,sans-serif"> </SPAN></TD> +</TABLE></TD> +</TABLE> +<BR> +</BODY> +</HTML> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.svg b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.svg new file mode 100644 index 00000000..5991ebf2 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/blkdiagram/system.svg @@ -0,0 +1,1473 @@ +<?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="1032" height="1531" viewBox="0 0 0 3062"> + <defs> + <symbol 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 class="intrsymbol" x="1.5" y="16">x</text> + </symbol> + <symbol 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 class="intrsymbol" x="1.5" y="16">x</text> + </symbol> + <symbol 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 class="intrsymbol" x="2" y="7">y</text> + <text class="intrsymbol" x="11" y="7">x</text> + </symbol> + <symbol 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 class="keytitle" x="234 " y="14">KEY</text> + <rect x="0" y="16" width="468" height="16" style="fill:#EEEEEE; stroke:none;"/> + <text class="keyheader" x="234 " y="30">SYMBOLS</text> + <use x="32" y="47" xlink:href="#KEY_Bif" transform="scale(0.75)"/> + <text class="keylabel" x="12" y="60">bus interface</text> + <use x="20" y="68" xlink:href="#KEY_SharedBus"/> + <text class="keylabel" x="12" y="85">shared bus</text> + <text class="keylblul" x="110" y="47">Bus connections</text> + <use x="110" y="58" xlink:href="#KEY_busconn_MASTER"/> + <text class="keylabel" x="140" y="72">master or initiator</text> + <use x="110" y="86" xlink:href="#KEY_busconn_SLAVE"/> + <text class="keylabel" x="140" y="100">slave or target</text> + <use x="110" y="114" xlink:href="#KEY_busconn_MASTER_SLAVE"/> + <text class="keylabel" x="140" y="128">master slave</text> + <use x="110" y="142" xlink:href="#KEY_busconn_MONITOR"/> + <text class="keylabel" x="140" y="156">monitor</text> + <text class="keylblul" x="258" y="47">External Ports</text> + <use x="258" y="58" xlink:href="#KEY_INPort"/> + <text class="keylabel" x="288" y="72">input</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">XIL (prefix) P2P</text> + <rect x="300" y="200" width="24" height="24" style="fill:#009999; stroke:none;"/> + <text class="keylabel" x="328" y="220">GEN. P2P, USER, etc</text> + </symbol> + <symbol 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">10.1.01</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">virtex4</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">xc4vfx12ff668-10</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="138.5" y="92">Sun May 11 14:31:02 2008 +</text> + </symbol> + <symbol 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"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="XIL_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#990066; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="XIL_busconn_MASTER"> + <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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="XIL_busconn_SLAVE"> + <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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="XIL_busconn_MASTER_SLAVE"> + <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;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#CC3399; stroke:#990066; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#990066; stroke:none;"/> + </symbol> + <symbol id="XIL_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#990066; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#990066; stroke:none;"/> + </symbol> + <symbol id="XIL_busconn_TRANSPARENT"> + <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;"/> + </symbol> + <symbol id="XIL_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#990066; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="OCM_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#0000DD; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="OCM_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#0000DD; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#0000DD; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#9999DD; stroke:#0000DD; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#0000DD; stroke:none;"/> + </symbol> + <symbol id="OCM_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#0000DD; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="OPB_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#339900; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="OPB_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#339900; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#339900; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#CCDDCC; stroke:#339900; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#339900; stroke:none;"/> + </symbol> + <symbol id="OPB_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#339900; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="LMB_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#7777FF; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="LMB_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#7777FF; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#7777FF; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#DDDDFF; stroke:#7777FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#7777FF; stroke:none;"/> + </symbol> + <symbol id="LMB_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#7777FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="FSL_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#CC00CC; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="FSL_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#CC00CC; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#CC00CC; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#FFBBFF; stroke:#CC00CC; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#CC00CC; stroke:none;"/> + </symbol> + <symbol id="FSL_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#CC00CC; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="DCR_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#6699FF; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="DCR_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#6699FF; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#6699FF; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#BBDDFF; stroke:#6699FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#6699FF; stroke:none;"/> + </symbol> + <symbol id="DCR_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#6699FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="FCB_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#8C00FF; stroke:black; stroke-width:1"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="FCB_busconn_INITIATOR"> + <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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="FCB_busconn_TARGET"> + <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;"/> + </symbol> + <symbol id="FCB_busconn_MASTER_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;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#CCCCFF; stroke:#8C00FF; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#8C00FF; stroke:none;"/> + </symbol> + <symbol id="FCB_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#8C00FF; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#8C00FF; stroke:none;"/> + </symbol> + <symbol id="FCB_busconn_TRANSPARENT"> + <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;"/> + </symbol> + <symbol id="FCB_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#8C00FF; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="PLB_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#FF5500; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="PLB_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FF5500; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#FF5500; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#FFBB00; stroke:#FF5500; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FF5500; stroke:none;"/> + </symbol> + <symbol id="PLB_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#FF5500; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="PLBV46_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#BB9955; stroke:black; stroke-width:1"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="PLBV46_busconn_INITIATOR"> + <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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="PLBV46_busconn_TARGET"> + <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;"/> + </symbol> + <symbol id="PLBV46_busconn_MASTER_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;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#FFFFDD; stroke:#BB9955; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#BB9955; stroke:none;"/> + </symbol> + <symbol id="PLBV46_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#BB9955; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#BB9955; stroke:none;"/> + </symbol> + <symbol id="PLBV46_busconn_TRANSPARENT"> + <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;"/> + </symbol> + <symbol id="PLBV46_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#BB9955; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="PLBV46_P2P_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#BB9955; stroke:black; stroke-width:1"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="PLBV46_P2P_busconn_INITIATOR"> + <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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="PLBV46_P2P_busconn_TARGET"> + <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;"/> + </symbol> + <symbol id="PLBV46_P2P_busconn_MASTER_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;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#FFFFDD; stroke:#BB9955; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#BB9955; stroke:none;"/> + </symbol> + <symbol id="PLBV46_P2P_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#BB9955; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#BB9955; stroke:none;"/> + </symbol> + <symbol id="PLBV46_P2P_busconn_TRANSPARENT"> + <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;"/> + </symbol> + <symbol id="PLBV46_P2P_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#BB9955; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="TRS_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#009999; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="TRS_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRS_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="TRANS_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#009999; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="TRANS_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANS_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#009999; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="TRANSPARENT_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TRANSPARENT_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="TARGET_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#009999; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="TARGET_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="TARGET_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#009999; stroke:black; stroke-width:1"/> + </symbol> + <symbol id="INITIATOR_busconn_MASTER"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_INITIATOR"> + <rect x="0" y="0" width="24" height="24" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="5" width="14" height="14" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_TARGET"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_MASTER_SLAVE"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="12" width="24" height="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <rect x="5.5" y="12" width="14" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_MONITOR"> + <rect x="0" y="0.5" width="24" height="7" style="fill:#009999; stroke:none;"/> + <rect x="0" y="16" width="24" height="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_TRANSPARENT"> + <circle cx="12" cy="12" r="12" style="fill:#00CCCC; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#009999; stroke:none;"/> + </symbol> + <symbol id="INITIATOR_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#009999; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="KEY_Bif"> + <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol 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;"/> + </symbol> + <symbol id="KEY_busconn_TRANSPARENT"> + <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;"/> + </symbol> + <symbol id="KEY_busconn_"> + <circle cx="12" cy="12" r="12" style="fill:#FFFFFF; stroke:#444444; stroke-width:1"/> + <circle cx="12.5" cy="12" r="7" style="fill:#FFFFFF; stroke:none;"/> + </symbol> + <symbol id="XIL_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#990066"/> + </symbol> + <symbol id="XIL_BusArrowWest"> + <use x="0" y="0" xlink:href="#XIL_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="XIL_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#990066"/> + </symbol> + <symbol id="XIL_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#990066"/> + </symbol> + <symbol id="XIL_BusArrowNorth"> + <use x="0" y="0" xlink:href="#XIL_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="XIL_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#990066"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="XIL_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#XIL_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="OCM_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#0000DD"/> + </symbol> + <symbol id="OCM_BusArrowWest"> + <use x="0" y="0" xlink:href="#OCM_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="OCM_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#0000DD"/> + </symbol> + <symbol id="OCM_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#0000DD"/> + </symbol> + <symbol id="OCM_BusArrowNorth"> + <use x="0" y="0" xlink:href="#OCM_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="OCM_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#0000DD"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="OCM_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#OCM_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="OPB_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#339900"/> + </symbol> + <symbol id="OPB_BusArrowWest"> + <use x="0" y="0" xlink:href="#OPB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="OPB_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#339900"/> + </symbol> + <symbol id="OPB_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#339900"/> + </symbol> + <symbol id="OPB_BusArrowNorth"> + <use x="0" y="0" xlink:href="#OPB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="OPB_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#339900"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="OPB_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#OPB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="LMB_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#7777FF"/> + </symbol> + <symbol id="LMB_BusArrowWest"> + <use x="0" y="0" xlink:href="#LMB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="LMB_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#7777FF"/> + </symbol> + <symbol id="LMB_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#7777FF"/> + </symbol> + <symbol id="LMB_BusArrowNorth"> + <use x="0" y="0" xlink:href="#LMB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="LMB_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#7777FF"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="LMB_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#LMB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="FSL_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#CC00CC"/> + </symbol> + <symbol id="FSL_BusArrowWest"> + <use x="0" y="0" xlink:href="#FSL_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="FSL_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#CC00CC"/> + </symbol> + <symbol id="FSL_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#CC00CC"/> + </symbol> + <symbol id="FSL_BusArrowNorth"> + <use x="0" y="0" xlink:href="#FSL_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="FSL_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#CC00CC"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="FSL_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#FSL_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="DCR_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#6699FF"/> + </symbol> + <symbol id="DCR_BusArrowWest"> + <use x="0" y="0" xlink:href="#DCR_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="DCR_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#6699FF"/> + </symbol> + <symbol id="DCR_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#6699FF"/> + </symbol> + <symbol id="DCR_BusArrowNorth"> + <use x="0" y="0" xlink:href="#DCR_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="DCR_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#6699FF"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="DCR_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#DCR_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="FCB_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#8C00FF"/> + </symbol> + <symbol id="FCB_BusArrowWest"> + <use x="0" y="0" xlink:href="#FCB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="FCB_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#8C00FF"/> + </symbol> + <symbol id="FCB_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#8C00FF"/> + </symbol> + <symbol id="FCB_BusArrowNorth"> + <use x="0" y="0" xlink:href="#FCB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="FCB_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#8C00FF"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="FCB_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#FCB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLB_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#FF5500"/> + </symbol> + <symbol id="PLB_BusArrowWest"> + <use x="0" y="0" xlink:href="#PLB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="PLB_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#FF5500"/> + </symbol> + <symbol id="PLB_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#FF5500"/> + </symbol> + <symbol id="PLB_BusArrowNorth"> + <use x="0" y="0" xlink:href="#PLB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="PLB_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#FF5500"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLB_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#PLB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLBV46_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="PLBV46_BusArrowWest"> + <use x="0" y="0" xlink:href="#PLBV46_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="PLBV46_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="PLBV46_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="PLBV46_BusArrowNorth"> + <use x="0" y="0" xlink:href="#PLBV46_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="PLBV46_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLBV46_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#PLBV46_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLBV46_P2P_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="PLBV46_P2P_BusArrowWest"> + <use x="0" y="0" xlink:href="#PLBV46_P2P_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="PLBV46_P2P_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="PLBV46_P2P_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="PLBV46_P2P_BusArrowNorth"> + <use x="0" y="0" xlink:href="#PLBV46_P2P_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="PLBV46_P2P_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLBV46_P2P_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#PLBV46_P2P_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="TRS_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRS_BusArrowWest"> + <use x="0" y="0" xlink:href="#TRS_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="TRS_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRS_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRS_BusArrowNorth"> + <use x="0" y="0" xlink:href="#TRS_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="TRS_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRS_SplitBus_EAST"> + <use x="0" y="0" xlink:href="#TRS_BusArrowWest"/> + <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRS_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#TRS_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol id="TRS_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"/> + </symbol> + <symbol id="TRANS_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANS_BusArrowWest"> + <use x="0" y="0" xlink:href="#TRANS_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="TRANS_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANS_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANS_BusArrowNorth"> + <use x="0" y="0" xlink:href="#TRANS_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="TRANS_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANS_SplitBus_EAST"> + <use x="0" y="0" xlink:href="#TRANS_BusArrowWest"/> + <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANS_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#TRANS_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol id="TRANS_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"/> + </symbol> + <symbol id="TRANSPARENT_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANSPARENT_BusArrowWest"> + <use x="0" y="0" xlink:href="#TRANSPARENT_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="TRANSPARENT_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANSPARENT_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANSPARENT_BusArrowNorth"> + <use x="0" y="0" xlink:href="#TRANSPARENT_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="TRANSPARENT_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANSPARENT_SplitBus_EAST"> + <use x="0" y="0" xlink:href="#TRANSPARENT_BusArrowWest"/> + <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TRANSPARENT_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#TRANSPARENT_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol id="TRANSPARENT_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"/> + </symbol> + <symbol id="TARGET_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TARGET_BusArrowWest"> + <use x="0" y="0" xlink:href="#TARGET_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="TARGET_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TARGET_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="TARGET_BusArrowNorth"> + <use x="0" y="0" xlink:href="#TARGET_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="TARGET_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="TARGET_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#TARGET_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="INITIATOR_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="INITIATOR_BusArrowWest"> + <use x="0" y="0" xlink:href="#INITIATOR_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="INITIATOR_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="INITIATOR_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#009999"/> + </symbol> + <symbol id="INITIATOR_BusArrowNorth"> + <use x="0" y="0" xlink:href="#INITIATOR_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="INITIATOR_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="INITIATOR_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#INITIATOR_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="KEY_BusArrowEast"> + <path class="bus" d="M 0,0 L 8, 6 L 0,12, Z" style="stroke:none; fill:#444444"/> + </symbol> + <symbol id="KEY_BusArrowWest"> + <use x="0" y="0" xlink:href="#KEY_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/> + </symbol> + <symbol id="KEY_BusArrowHInitiator"> + <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#444444"/> + </symbol> + <symbol id="KEY_BusArrowSouth"> + <path class="bus" d="M 0,0 L 12,0 L 6, 8 Z" style="stroke:none; fill:#444444"/> + </symbol> + <symbol id="KEY_BusArrowNorth"> + <use x="0" y="0" xlink:href="#KEY_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/> + </symbol> + <symbol id="KEY_BusArrowInitiator"> + <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#444444"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="KEY_SplitBus_WEST"> + <use x="0" y="0" xlink:href="#KEY_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="PLB_SharedBus"> + <use x="0" y="0" xlink:href="#PLB_BusArrowWest"/> + <use x="806" y="0" xlink:href="#PLB_BusArrowEast"/> + <rect x="8" y="2" width="798" height="8" style="stroke:none; fill:#FF5500"/> + </symbol> + <symbol id="PLBV46_SharedBus"> + <use x="0" y="0" xlink:href="#PLBV46_BusArrowWest"/> + <use x="806" y="0" xlink:href="#PLBV46_BusArrowEast"/> + <rect x="8" y="2" width="798" height="8" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="OPB_SharedBus"> + <use x="0" y="0" xlink:href="#OPB_BusArrowWest"/> + <use x="806" y="0" xlink:href="#OPB_BusArrowEast"/> + <rect x="8" y="2" width="798" height="8" style="stroke:none; fill:#339900"/> + </symbol> + <symbol id="group_sharedBusses"> + <use x="0" y="0" xlink:href="#PLBV46_SharedBus"/> + <text class="sharedbuslabel" x="8" y="22">plb</text> + </symbol> + <symbol 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"/> + </symbol> + <symbol id="sbsbktmodule_LEDs_4Bit"> + <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;"/> + <rect x="11" y="76" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="90">A</text> + <text class="bciptype" x="45" y="64">xps_gpio</text> + <text class="bciplabel" x="45" y="72">LEDs_4Bit</text> + <use x="29" y="28" xlink:href="#PLBV46_Bif"/> + <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/> + <text class="biflabel" x="45" y="39">SPLB</text> + </symbol> + <symbol 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;"/> + <rect x="11" y="76" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="90">B</text> + <text class="bciptype" x="45" y="64">xps_gpio</text> + <text class="bciplabel" x="45" y="72">LEDs_Positions</text> + <use x="29" y="28" xlink:href="#PLBV46_Bif"/> + <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/> + <text class="biflabel" x="45" y="39">SPLB</text> + </symbol> + <symbol id="sbsbktmodule_RS232_Uart"> + <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;"/> + <rect x="11" y="76" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="90">C</text> + <text class="bciptype" x="45" y="64">xps_uartlite</text> + <text class="bciplabel" x="45" y="72">RS232_Uart</text> + <use x="29" y="28" xlink:href="#PLBV46_Bif"/> + <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/> + <text class="biflabel" x="45" y="39">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 class="intrsymbol" x="74" y="32">0</text> + <text class="intrsymbol" x="83" y="32">0</text> + </symbol> + <symbol 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;"/> + <rect x="11" y="76" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="90">D</text> + <text class="bciptype" x="45" y="64">xps_mch_emc</text> + <text class="bciplabel" x="45" y="72">SRAM</text> + <use x="29" y="28" xlink:href="#PLBV46_Bif"/> + <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/> + <text class="biflabel" x="45" y="39">SPLB</text> + </symbol> + <symbol 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;"/> + <rect x="11" y="76" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="90">F</text> + <text class="bciptype" x="45" y="64">xps_sysace</text> + <text class="bciplabel" x="45" y="72">SysACE_CompactFlash</text> + <use x="29" y="28" xlink:href="#PLBV46_Bif"/> + <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/> + <text class="biflabel" x="45" y="39">SPLB</text> + </symbol> + <symbol 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 class="bciptype" x="45" y="64">xps_intc</text> + <text class="bciplabel" x="45" y="72">xps_intc_0</text> + <use x="29" y="28" xlink:href="#PLBV46_Bif"/> + <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/> + <text class="biflabel" x="45" y="39">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 class="intrsymbol" x="83" y="44">0</text> + </symbol> + <symbol id="sbsbucket_plb"> + <rect x="0" y="0" rx="4" ry="4" width="334" height="244" style="stroke-width:2; stroke:#BB9955; fill:#FFFFDD"/> + <use x="16" y="16" xlink:href="#sbsbktmodule_LEDs_4Bit"/> + <rect x="0" y="24" width="61" height="8" style="fill:#BB9955"/> + <use x="122" y="16" xlink:href="#sbsbktmodule_LEDs_Positions"/> + <rect x="61" y="24" width="106" height="8" style="fill:#BB9955"/> + <use x="228" y="16" xlink:href="#sbsbktmodule_RS232_Uart"/> + <rect x="167" y="24" width="106" height="8" style="fill:#BB9955"/> + <use x="16" y="130" xlink:href="#sbsbktmodule_SRAM"/> + <rect x="0" y="138" width="61" height="8" style="fill:#BB9955"/> + <use x="122" y="130" xlink:href="#sbsbktmodule_SysACE_CompactFlash"/> + <rect x="61" y="138" width="106" height="8" style="fill:#BB9955"/> + <use x="228" y="130" xlink:href="#sbsbktmodule_xps_intc_0"/> + <rect x="167" y="138" width="106" height="8" style="fill:#BB9955"/> + <rect x="0" y="24" width="8" height="114" style="fill:#BB9955"/> + </symbol> + <symbol id="ipbktmodule_SRAM_util_bus_split_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 class="bciptype" x="45" y="26">util_bus_split</text> + <text class="bciplabel" x="45" y="34">SRAM_util_bus_split_0</text> + <rect x="11" y="38" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="52">E</text> + </symbol> + <symbol 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 class="bciptype" x="45" y="26">clock_generator</text> + <text class="bciplabel" x="45" y="34">clock_generator_0</text> + <rect x="11" y="38" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="52">G</text> + </symbol> + <symbol id="ipbucket"> + <rect x="0" y="0" rx="4" ry="4" width="228" height="106" style="stroke-width:2; stroke:#000000; fill:#CCCCFF"/> + <use x="16" y="16" xlink:href="#ipbktmodule_SRAM_util_bus_split_0"/> + <use x="122" y="16" xlink:href="#ipbktmodule_clock_generator_0"/> + </symbol> + <symbol 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 class="bciptype" x="45" y="12">jtagppc_cntlr</text> + <text class="bciplabel" x="45" y="20">jtagppc_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_Bif"/> + <text class="biflabel" x="27" y="65">JTAG</text> + </symbol> + <symbol 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 class="bciptype" x="45" y="12">proc_sys_reset</text> + <text class="bciplabel" x="45" y="20">proc_sys_reset_0</text> + <rect x="11" y="24" rx="3" ry="3" width="68" height="16" style="fill:#CCCCFF; stroke:none;"/> + <text class="ioplblgrp" x="45" y="38">H</text> + <line x1="79" y1="64" x2="91" y2="64" style="stroke:#990066;stroke-width:1"/> + <use x="47" y="54" xlink:href="#XIL_Bif"/> + <text class="biflabel" x="63" y="65">RESE</text> + </symbol> + <symbol 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 class="bciptype" x="45" y="12">apu_fpu</text> + <text class="bciplabel" x="45" y="20">apu_fpu_0</text> + <line x1="79" y1="64" x2="91" y2="64" style="stroke:#8C00FF;stroke-width:1"/> + <use x="47" y="54" xlink:href="#FCB_Bif"/> + <text class="biflabel" x="63" y="65">SFCB</text> + </symbol> + <symbol id="symbol_STACK_0_SHAPE_3"> + <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 class="bciptype" x="45" y="12">ppc405_virtex4</text> + <text class="bciplabel" x="45" y="20">ppc405_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_Bif"/> + <text class="biflabel" x="27" y="65">JTAG</text> + <line x1="79" y1="120" x2="91" y2="120" style="stroke:#BB9955;stroke-width:1"/> + <use x="47" y="110" xlink:href="#PLBV46_Bif"/> + <text class="biflabel" x="63" y="121">IPLB0</text> + <line x1="0" y1="120" x2="11" y2="120" style="stroke:#BB9955;stroke-width:1"/> + <use x="11" y="110" xlink:href="#PLBV46_Bif"/> + <text class="biflabel" x="27" y="121">DPLB0</text> + <line x1="79" y1="92" x2="91" y2="92" style="stroke:#990066;stroke-width:1"/> + <use x="47" y="82" xlink:href="#XIL_Bif"/> + <text class="biflabel" x="63" y="93">RESE</text> + <line x1="79" y1="64" x2="91" y2="64" style="stroke:#8C00FF;stroke-width:1"/> + <use x="47" y="54" xlink:href="#FCB_Bif"/> + <text class="biflabel" x="63" y="65">MFCB</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 class="intrsymbol" x="83" y="20">0</text> + </symbol> + <symbol id="symbol_STACK_0"> + <rect x="0" y="0" rx="6" ry="6" width="334" height="0" style="fill:#CCCCCC; stroke:none;"/> + <use x="122" y="90" xlink:href="#symbol_STACK_0_SHAPE_1"/> + <use x="122" y="0" xlink:href="#symbol_STACK_0_SHAPE_0"/> + <use x="122" y="180" xlink:href="#symbol_STACK_0_SHAPE_2"/> + <use x="0" y="554" xlink:href="#sbsbucket_plb"/> + <text class="ipclass" x="0" y="550">SLAVES OF plb</text> + <use x="122" y="270" xlink:href="#symbol_STACK_0_SHAPE_3"/> + <text class="ipclass" x="122" y="266">PROCESSOR</text> + </symbol> + <symbol id="symbol_SPACE_WEST_NONE_EAST_0"> + <rect x="80" y="148" width="8" height="188" style="stroke:none;fill:#990066"/> + <text class="p2pbuslabel" x="92" y="176">jtagppc_0_0</text> + <use x="258" y="320" xlink:href="#XIL_busconn_TARGET"/> + <use x="250" y="326" xlink:href="#XIL_BusArrowEast"/> + <rect x="84" y="328" width="166" height="8" style="stroke:none; fill:#990066"/> + <use x="258" y="140" xlink:href="#XIL_busconn_INITIATOR"/> + <use x="250" y="146" xlink:href="#XIL_BusArrowEast"/> + <rect x="84" y="148" width="166" height="8" style="stroke:none; fill:#990066"/> + <use x="258" y="376" xlink:href="#PLBV46_busconn_MASTER"/> + <rect x="72" y="390" width="8" height="64" style="stroke:none; fill:#BB9955"/> + <rect x="72" y="384" width="192" height="8" style="stroke:none; fill:#BB9955"/> + <rect x="36" y="458" width="8" height="127" style="stroke:none; fill:#BB9955"/> + <rect x="36" y="578" width="247" height="8" style="stroke:none; fill:#BB9955"/> + </symbol> + <symbol id="symbol_SPACE_WEST_0_EAST_NONE"> + <use x="45" y="376" xlink:href="#PLBV46_busconn_MASTER"/> + <rect x="223" y="390" width="8" height="64" style="stroke:none; fill:#BB9955"/> + <rect x="64" y="384" width="167" height="8" style="stroke:none; fill:#BB9955"/> + <rect x="263" y="58" width="8" height="306" style="stroke:none;fill:#990066"/> + <text class="p2pbuslabel" x="275" y="86">ppc_reset_bus</text> + <use x="45" y="348" xlink:href="#XIL_busconn_TARGET"/> + <use x="69" y="354" xlink:href="#XIL_BusArrowWest"/> + <rect x="76" y="356" width="192" height="8" style="stroke:none; fill:#990066"/> + <use x="45" y="50" xlink:href="#XIL_busconn_INITIATOR"/> + <use x="69" y="56" xlink:href="#XIL_BusArrowWest"/> + <rect x="76" y="58" width="192" height="8" style="stroke:none; fill:#990066"/> + <rect x="223" y="238" width="8" height="98" style="stroke:none;fill:#8C00FF"/> + <text class="p2pbuslabel" x="235" y="266">fcb_v10_0</text> + <use x="45" y="320" xlink:href="#FCB_busconn_MASTER"/> + <use x="69" y="326" xlink:href="#FCB_BusArrowWest"/> + <rect x="76" y="328" width="152" height="8" style="stroke:none; fill:#8C00FF"/> + <use x="45" y="230" xlink:href="#FCB_busconn_SLAVE"/> + <use x="69" y="236" xlink:href="#FCB_BusArrowWest"/> + <rect x="76" y="238" width="152" height="8" style="stroke:none; fill:#8C00FF"/> + </symbol> + </defs> + <rect x="0" y="0" width="1032" height="1531" style="fill:#FFFFFF; stroke:#000000;stroke-width:4"/> + <rect x="48" y="40" width="936" height="1190" style="fill:#000088"/> + <rect x="64" y="56" width="904" height="1158" rx="8" ry="8" style="fill:#CCCCCC"/> + <use x="32" y="471" id="fpga_0_RS232_Uart_RX_pin" xlink:href="#G_IOPort" transform="rotate(0,40,479)"/> + <text class="iopnumb" x="22" y="485"><tspan class="iopgrp"></tspan></text> + <use x="32" y="499" id="fpga_0_RS232_Uart_TX_pin" xlink:href="#G_IOPort" transform="rotate(180,40,507)"/> + <text class="iopnumb" x="22" y="513"><tspan class="iopgrp"></tspan></text> + <use x="32" y="527" id="fpga_0_LEDs_4Bit_GPIO_IO_pin" xlink:href="#G_BIPort" transform="rotate(0,40,535)"/> + <text class="iopnumb" x="22" y="541"><tspan class="iopgrp"></tspan></text> + <use x="32" y="555" id="fpga_0_LEDs_Positions_GPIO_IO_pin" xlink:href="#G_BIPort" transform="rotate(0,40,563)"/> + <text class="iopnumb" x="22" y="569"><tspan class="iopgrp"></tspan></text> + <use x="32" y="583" id="fpga_0_SysACE_CompactFlash_SysACE_CLK_pin" xlink:href="#G_IOPort" transform="rotate(0,40,591)"/> + <text class="iopnumb" x="22" y="597"><tspan class="iopgrp"></tspan></text> + <use x="32" y="611" id="fpga_0_SysACE_CompactFlash_SysACE_MPA_pin" xlink:href="#G_IOPort" transform="rotate(180,40,619)"/> + <text class="iopnumb" x="22" y="625"><tspan class="iopgrp"></tspan></text> + <use x="32" y="639" id="fpga_0_SysACE_CompactFlash_SysACE_MPD_pin" xlink:href="#G_BIPort" transform="rotate(0,40,647)"/> + <text class="iopnumb" x="22" y="653"><tspan class="iopgrp"></tspan></text> + <use x="32" y="667" id="fpga_0_SysACE_CompactFlash_SysACE_CEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,675)"/> + <text class="iopnumb" x="22" y="681"><tspan class="iopgrp"></tspan></text> + <use x="32" y="695" id="fpga_0_SysACE_CompactFlash_SysACE_OEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,703)"/> + <text class="iopnumb" x="22" y="709"><tspan class="iopgrp"></tspan></text> + <use x="32" y="723" id="fpga_0_SysACE_CompactFlash_SysACE_WEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,731)"/> + <text class="iopnumb" x="22" y="737"><tspan class="iopgrp"></tspan></text> + <use x="32" y="751" id="fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin" xlink:href="#G_IOPort" transform="rotate(0,40,759)"/> + <text class="iopnumb" x="22" y="765"><tspan class="iopgrp"></tspan></text> + <use x="984" y="471" id="fpga_0_SRAM_Mem_A_pin" xlink:href="#G_IOPort" transform="rotate(0,992,479)"/> + <text class="iopnumb" x="1012" y="485"><tspan class="iopgrp"></tspan></text> + <use x="984" y="499" id="fpga_0_SRAM_Mem_BEN_pin" xlink:href="#G_IOPort" transform="rotate(0,992,507)"/> + <text class="iopnumb" x="1012" y="513"><tspan class="iopgrp"></tspan></text> + <use x="984" y="527" id="fpga_0_SRAM_Mem_WEN_pin" xlink:href="#G_IOPort" transform="rotate(0,992,535)"/> + <text class="iopnumb" x="1012" y="541"><tspan class="iopgrp"></tspan></text> + <use x="984" y="555" id="fpga_0_SRAM_Mem_DQ_pin" xlink:href="#G_BIPort" transform="rotate(0,992,563)"/> + <text class="iopnumb" x="1012" y="569"><tspan class="iopgrp"></tspan></text> + <use x="984" y="583" id="fpga_0_SRAM_Mem_OEN_pin" xlink:href="#G_IOPort" transform="rotate(0,992,591)"/> + <text class="iopnumb" x="1012" y="597"><tspan class="iopgrp"></tspan></text> + <use x="984" y="611" id="fpga_0_SRAM_Mem_CEN_pin" xlink:href="#G_IOPort" transform="rotate(0,992,619)"/> + <text class="iopnumb" x="1012" y="625"><tspan class="iopgrp"></tspan></text> + <use x="984" y="639" id="fpga_0_SRAM_Mem_ADV_LDN_pin" xlink:href="#G_IOPort" transform="rotate(0,992,647)"/> + <text class="iopnumb" x="1012" y="653"><tspan class="iopgrp"></tspan></text> + <use x="984" y="667" id="fpga_0_SRAM_CLOCK" xlink:href="#G_IOPort" transform="rotate(0,992,675)"/> + <text class="iopnumb" x="1012" y="681"><tspan class="iopgrp"></tspan></text> + <use x="984" y="695" id="sys_clk_pin" xlink:href="#G_IOPort" transform="rotate(180,992,703)"/> + <text class="iopnumb" x="1012" y="709"><tspan class="iopgrp"></tspan></text> + <use x="984" y="723" id="sys_rst_pin" xlink:href="#G_IOPort" transform="rotate(180,992,731)"/> + <text class="iopnumb" x="1012" y="737"><tspan class="iopgrp"></tspan></text> + <use x="109" y="549" xlink:href="#group_sharedBusses"/> + <use x="269" y="101" xlink:href="#symbol_SPACE_WEST_NONE_EAST_0"/> + <use x="596" y="101" xlink:href="#symbol_SPACE_WEST_0_EAST_NONE"/> + <use x="429" y="101" xlink:href="#symbol_STACK_0"/> + <text class="ipclass" x="402" y="1001">IP</text> + <use x="402" y="1005" xlink:href="#ipbucket"/> + <use x="516" y="1273" xlink:href="#BlkDiagram_Key"/> + <use x="48" y="1273" xlink:href="#BlkDiagram_Specs"/> +</svg> diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/data/system.ucf b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/data/system.ucf new file mode 100644 index 00000000..0b81c8ff --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/data/system.ucf @@ -0,0 +1,398 @@ +############################################################################
+## This system.ucf file is generated by Base System Builder based on the
+## settings in the selected Xilinx Board Definition file. Please add other
+## user constraints to this file based on customer design specifications.
+############################################################################
+
+Net sys_clk_pin LOC=AE14;
+Net sys_clk_pin IOSTANDARD = LVCMOS33;
+Net sys_rst_pin LOC=D6;
+Net sys_rst_pin PULLUP;
+## System level constraints
+Net sys_clk_pin TNM_NET = sys_clk_pin;
+TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 10000 ps;
+Net sys_rst_pin TIG;
+NET "ppc_reset_bus_Chip_Reset_Req" TPTHRU = "RST_GRP";
+NET "ppc_reset_bus_Core_Reset_Req" TPTHRU = "RST_GRP";
+NET "ppc_reset_bus_System_Reset_Req" TPTHRU = "RST_GRP";
+TIMESPEC "TS_RST1" = FROM CPUS THRU RST_GRP TO FFS TIG;
+Net fpga_0_SRAM_CLOCK LOC=AF7;
+Net fpga_0_SRAM_CLOCK SLEW = FAST;
+Net fpga_0_SRAM_CLOCK IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_CLOCK DRIVE = 16;
+
+## IO Devices constraints
+
+#### Module RS232_Uart constraints
+
+Net fpga_0_RS232_Uart_RX_pin LOC=W2;
+Net fpga_0_RS232_Uart_RX_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_RS232_Uart_TX_pin LOC=W1;
+Net fpga_0_RS232_Uart_TX_pin IOSTANDARD = LVCMOS33;
+
+#### Module LEDs_4Bit constraints
+
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<0> LOC=G5;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<0> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<0> PULLUP;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<0> SLEW = SLOW;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<0> DRIVE = 2;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<0> TIG;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<1> LOC=G6;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<1> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<1> PULLUP;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<1> SLEW = SLOW;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<1> DRIVE = 2;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<1> TIG;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<2> LOC=A11;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<2> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<2> PULLUP;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<2> SLEW = SLOW;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<2> DRIVE = 2;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<2> TIG;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<3> LOC=A12;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<3> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<3> PULLUP;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<3> SLEW = SLOW;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<3> DRIVE = 2;
+Net fpga_0_LEDs_4Bit_GPIO_IO_pin<3> TIG;
+
+#### Module LEDs_Positions constraints
+
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> LOC=C6;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> PULLUP;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> SLEW = SLOW;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> DRIVE = 2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> TIG;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> LOC=F9;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> PULLUP;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> SLEW = SLOW;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> DRIVE = 2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> TIG;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> LOC=A5;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> PULLUP;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> SLEW = SLOW;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> DRIVE = 2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> TIG;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> LOC=E10;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> PULLUP;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> SLEW = SLOW;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> DRIVE = 2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> TIG;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> LOC=E2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> IOSTANDARD = LVCMOS25;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> PULLUP;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> SLEW = SLOW;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> DRIVE = 2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> TIG;
+
+#### Module SysACE_CompactFlash constraints
+
+Net fpga_0_SysACE_CompactFlash_SysACE_CLK_pin LOC=AF11;
+Net fpga_0_SysACE_CompactFlash_SysACE_CLK_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_CLK_pin PERIOD = 30000 ps;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<1> LOC=Y10;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<1> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<2> LOC=AA10;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<2> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<3> LOC=AC7;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<3> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<4> LOC=Y7;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<4> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<5> LOC=AA9;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<5> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<6> LOC=Y9;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<6> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<0> LOC=AB7;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<0> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<1> LOC=AC9;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<1> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<2> LOC=AB9;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<2> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<3> LOC=AE6;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<3> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<4> LOC=AD6;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<4> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<5> LOC=AF9;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<5> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<6> LOC=AE9;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<6> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<7> LOC=AD8;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<7> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<8> LOC=AC8;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<8> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<9> LOC=AF4;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<9> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<10> LOC=AE4;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<10> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<11> LOC=AD3;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<11> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<12> LOC=AC3;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<12> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<13> LOC=AF6;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<13> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<14> LOC=AF5;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<14> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<15> LOC=AA7;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<15> IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_CEN_pin LOC=AD5;
+Net fpga_0_SysACE_CompactFlash_SysACE_CEN_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_OEN_pin LOC=AA8;
+Net fpga_0_SysACE_CompactFlash_SysACE_OEN_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_WEN_pin LOC=Y8;
+Net fpga_0_SysACE_CompactFlash_SysACE_WEN_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin LOC=AD4;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin TIG;
+
+#### Module SRAM constraints
+
+Net fpga_0_SRAM_Mem_A_pin<29> LOC=Y1;
+Net fpga_0_SRAM_Mem_A_pin<29> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<29> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<29> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<28> LOC=Y2;
+Net fpga_0_SRAM_Mem_A_pin<28> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<28> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<28> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<27> LOC=AA1;
+Net fpga_0_SRAM_Mem_A_pin<27> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<27> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<27> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<26> LOC=AB1;
+Net fpga_0_SRAM_Mem_A_pin<26> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<26> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<26> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<25> LOC=AB2;
+Net fpga_0_SRAM_Mem_A_pin<25> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<25> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<25> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<24> LOC=AC1;
+Net fpga_0_SRAM_Mem_A_pin<24> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<24> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<24> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<23> LOC=AC2;
+Net fpga_0_SRAM_Mem_A_pin<23> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<23> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<23> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<22> LOC=AD1;
+Net fpga_0_SRAM_Mem_A_pin<22> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<22> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<22> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<21> LOC=AD2;
+Net fpga_0_SRAM_Mem_A_pin<21> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<21> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<21> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<20> LOC=AE3;
+Net fpga_0_SRAM_Mem_A_pin<20> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<20> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<20> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<19> LOC=AF3;
+Net fpga_0_SRAM_Mem_A_pin<19> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<19> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<19> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<18> LOC=W3;
+Net fpga_0_SRAM_Mem_A_pin<18> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<18> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<18> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<17> LOC=W6;
+Net fpga_0_SRAM_Mem_A_pin<17> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<17> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<17> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<16> LOC=W5;
+Net fpga_0_SRAM_Mem_A_pin<16> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<16> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<16> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<15> LOC=AA3;
+Net fpga_0_SRAM_Mem_A_pin<15> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<15> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<15> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<14> LOC=AA4;
+Net fpga_0_SRAM_Mem_A_pin<14> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<14> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<14> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<13> LOC=AB3;
+Net fpga_0_SRAM_Mem_A_pin<13> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<13> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<13> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<12> LOC=AB4;
+Net fpga_0_SRAM_Mem_A_pin<12> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<12> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<12> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<11> LOC=AC4;
+Net fpga_0_SRAM_Mem_A_pin<11> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<11> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<11> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<10> LOC=AB5;
+Net fpga_0_SRAM_Mem_A_pin<10> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<10> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<10> DRIVE = 8;
+Net fpga_0_SRAM_Mem_A_pin<9> LOC=AC5;
+Net fpga_0_SRAM_Mem_A_pin<9> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<9> SLEW = FAST;
+Net fpga_0_SRAM_Mem_A_pin<9> DRIVE = 8;
+Net fpga_0_SRAM_Mem_BEN_pin<3> LOC=Y6;
+Net fpga_0_SRAM_Mem_BEN_pin<3> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_BEN_pin<3> SLEW = FAST;
+Net fpga_0_SRAM_Mem_BEN_pin<3> DRIVE = 8;
+Net fpga_0_SRAM_Mem_BEN_pin<2> LOC=Y5;
+Net fpga_0_SRAM_Mem_BEN_pin<2> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_BEN_pin<2> SLEW = FAST;
+Net fpga_0_SRAM_Mem_BEN_pin<2> DRIVE = 8;
+Net fpga_0_SRAM_Mem_BEN_pin<1> LOC=Y4;
+Net fpga_0_SRAM_Mem_BEN_pin<1> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_BEN_pin<1> SLEW = FAST;
+Net fpga_0_SRAM_Mem_BEN_pin<1> DRIVE = 8;
+Net fpga_0_SRAM_Mem_BEN_pin<0> LOC=Y3;
+Net fpga_0_SRAM_Mem_BEN_pin<0> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_BEN_pin<0> SLEW = FAST;
+Net fpga_0_SRAM_Mem_BEN_pin<0> DRIVE = 8;
+Net fpga_0_SRAM_Mem_WEN_pin LOC=AB6;
+Net fpga_0_SRAM_Mem_WEN_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_WEN_pin SLEW = FAST;
+Net fpga_0_SRAM_Mem_WEN_pin DRIVE = 8;
+Net fpga_0_SRAM_Mem_DQ_pin<31> LOC=AD13;
+Net fpga_0_SRAM_Mem_DQ_pin<31> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<31> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<31> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<30> LOC=AC13;
+Net fpga_0_SRAM_Mem_DQ_pin<30> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<30> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<30> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<29> LOC=AC15;
+Net fpga_0_SRAM_Mem_DQ_pin<29> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<29> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<29> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<28> LOC=AC16;
+Net fpga_0_SRAM_Mem_DQ_pin<28> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<28> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<28> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<27> LOC=AA11;
+Net fpga_0_SRAM_Mem_DQ_pin<27> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<27> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<27> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<26> LOC=AA12;
+Net fpga_0_SRAM_Mem_DQ_pin<26> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<26> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<26> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<25> LOC=AD14;
+Net fpga_0_SRAM_Mem_DQ_pin<25> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<25> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<25> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<24> LOC=AC14;
+Net fpga_0_SRAM_Mem_DQ_pin<24> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<24> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<24> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<23> LOC=AA13;
+Net fpga_0_SRAM_Mem_DQ_pin<23> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<23> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<23> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<22> LOC=AB13;
+Net fpga_0_SRAM_Mem_DQ_pin<22> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<22> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<22> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<21> LOC=AA15;
+Net fpga_0_SRAM_Mem_DQ_pin<21> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<21> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<21> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<20> LOC=AA16;
+Net fpga_0_SRAM_Mem_DQ_pin<20> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<20> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<20> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<19> LOC=AC11;
+Net fpga_0_SRAM_Mem_DQ_pin<19> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<19> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<19> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<18> LOC=AC12;
+Net fpga_0_SRAM_Mem_DQ_pin<18> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<18> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<18> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<17> LOC=AB14;
+Net fpga_0_SRAM_Mem_DQ_pin<17> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<17> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<17> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<16> LOC=AA14;
+Net fpga_0_SRAM_Mem_DQ_pin<16> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<16> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<16> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<15> LOC=D12;
+Net fpga_0_SRAM_Mem_DQ_pin<15> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<15> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<15> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<14> LOC=E13;
+Net fpga_0_SRAM_Mem_DQ_pin<14> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<14> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<14> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<13> LOC=C16;
+Net fpga_0_SRAM_Mem_DQ_pin<13> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<13> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<13> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<12> LOC=D16;
+Net fpga_0_SRAM_Mem_DQ_pin<12> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<12> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<12> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<11> LOC=D11;
+Net fpga_0_SRAM_Mem_DQ_pin<11> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<11> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<11> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<10> LOC=C11;
+Net fpga_0_SRAM_Mem_DQ_pin<10> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<10> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<10> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<9> LOC=E14;
+Net fpga_0_SRAM_Mem_DQ_pin<9> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<9> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<9> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<8> LOC=D15;
+Net fpga_0_SRAM_Mem_DQ_pin<8> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<8> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<8> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<7> LOC=D13;
+Net fpga_0_SRAM_Mem_DQ_pin<7> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<7> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<7> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<6> LOC=D14;
+Net fpga_0_SRAM_Mem_DQ_pin<6> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<6> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<6> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<5> LOC=F15;
+Net fpga_0_SRAM_Mem_DQ_pin<5> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<5> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<5> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<4> LOC=F16;
+Net fpga_0_SRAM_Mem_DQ_pin<4> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<4> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<4> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<3> LOC=F11;
+Net fpga_0_SRAM_Mem_DQ_pin<3> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<3> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<3> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<2> LOC=F12;
+Net fpga_0_SRAM_Mem_DQ_pin<2> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<2> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<2> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<1> LOC=F13;
+Net fpga_0_SRAM_Mem_DQ_pin<1> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<1> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<1> DRIVE = 12;
+Net fpga_0_SRAM_Mem_DQ_pin<0> LOC=F14;
+Net fpga_0_SRAM_Mem_DQ_pin<0> SLEW = FAST;
+Net fpga_0_SRAM_Mem_DQ_pin<0> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<0> DRIVE = 12;
+Net fpga_0_SRAM_Mem_OEN_pin<0> LOC=AC6;
+Net fpga_0_SRAM_Mem_OEN_pin<0> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_OEN_pin<0> SLEW = FAST;
+Net fpga_0_SRAM_Mem_OEN_pin<0> DRIVE = 8;
+Net fpga_0_SRAM_Mem_CEN_pin<0> LOC=V7;
+Net fpga_0_SRAM_Mem_CEN_pin<0> IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_CEN_pin<0> SLEW = FAST;
+Net fpga_0_SRAM_Mem_CEN_pin<0> DRIVE = 8;
+Net fpga_0_SRAM_Mem_ADV_LDN_pin LOC=W4;
+Net fpga_0_SRAM_Mem_ADV_LDN_pin IOSTANDARD = LVCMOS33;
+Net fpga_0_SRAM_Mem_ADV_LDN_pin SLEW = FAST;
+Net fpga_0_SRAM_Mem_ADV_LDN_pin DRIVE = 8;
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/bitgen.ut b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/bitgen.ut new file mode 100644 index 00000000..97653633 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/bitgen.ut @@ -0,0 +1,20 @@ +-g CclkPin:PULLUP +-g TdoPin:PULLNONE +-g M1Pin:PULLDOWN +-g DonePin:PULLUP +-g DriveDone:No +-g StartUpClk:JTAGCLK +-g DONE_cycle:4 +-g GTS_cycle:5 +-g M0Pin:PULLUP +-g M2Pin:PULLUP +-g ProgPin:PULLUP +-g TckPin:PULLUP +-g TdiPin:PULLUP +-g TmsPin:PULLUP +-g DonePipe:No +-g GWE_cycle:6 +-g LCK_cycle:NoWait +-g Security:NONE +#-m +-g Persist:No diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/download.cmd b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/download.cmd new file mode 100644 index 00000000..15728dcf --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/download.cmd @@ -0,0 +1,6 @@ +setMode -bscan
+setCable -p auto
+identify
+assignfile -p 3 -file implementation/download.bit
+program -p 3
+quit
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/fast_runtime.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/fast_runtime.opt new file mode 100644 index 00000000..6cc2599a --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/fast_runtime.opt @@ -0,0 +1,82 @@ +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 +-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/PPC405_FPU_Xilinx_Virtex4_GCC/etc/xmd_ppc405_0.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/xmd_ppc405_0.opt new file mode 100644 index 00000000..7adb1c0c --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/etc/xmd_ppc405_0.opt @@ -0,0 +1 @@ +connect ppc hw -cable type xilinx_parallel port LPT1 frequency 2500000 -debugdevice cpunr 1 fpuType sp
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/platgen.opt b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/platgen.opt new file mode 100644 index 00000000..18547358 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/platgen.opt @@ -0,0 +1,5 @@ +-p
+xc4vfx12ff668-10
+-lang
+vhdl
+system.mhs
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.bsb b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.bsb new file mode 100644 index 00000000..12d83ba8 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.bsb @@ -0,0 +1 @@ +Įtt@Db`\b\`bDvCĮtt@DD@D@h@h`f@@D@DbDv,Įttʌ@DD@DhDv,Įttʌ@DD@DhbdDv%Įttʌ@DD@DllpDv&Įttʌ@DD@DZb`Dv3Įtt@Dh`jhhlD@Db\``\Dv,Įttʆ@DD@Db``\``````Dv,Įttʆ@DD@Db``\``````Dv-Įttʆ@DD@Dd``\``````Dv(Įttʦ@DD@D`Dv1ĮttȠ@Dh`j`D@Dh`jhDv/Įttʆ@Dh`j`D@DD@DbDv3Įttʆ@Dh`j`D@DD@DbDv:Įttʆ@Dh`j`D@DD@D@Dv6Įttʆ@Dh`j`D@D@D@DDv6Įttʆ@Dh`j`D@D@D@DDv2Įttʆ@Dh`j`D@DD@D`Dv2ĮttȠ@DdfdD@DDv9Įttʆ@DdfdD@DD@Drl``Dv7Įttʆ@DdfdD@DD@DpDv8Įttʆ@DdfdD@DD@D`Dv8Įttʆ@DdfdD@DD@D`Dv<Įttʆ@DdfdD@DD@DbDv<Įttʆ@DdfdD@DD@DDv-ĮttȠ@DhD@DDv;Įttʆ@DhD@DD@DbDv2ĮttȠ@D澠D@DDv@Įttʆ@D澠D@DD@DbDv9ĮttȠ@D悆D@DDvGĮttʆ@D悆D@DD@DbDv+ĮttȠ@DD@DоDv5Įttʆ@DD@DD@DbDv:Įttʆ@Dh`j`D@DD@DvDv8Įttʆ@Dh`j`D@DD@DblDv9Įttʆ@Dh`j`D@DD@DblDv9Įttʆ@Dh`j`D@DD@DvDv9Įttʆ@Dh`j`D@DD@DvDv:Įttʆ@Dh`j`D@DD@Dh`j`Dv/Įttʦ@DD@DDv1Įttʦ@DD@DDv)Įttʦ@DD@DDv7Įttʦ@Dh`j`D@DD@Dh`j`Dv0Įttʦ@Dh`j`D@DD@DDv.Įttʦ@Dh`j`D@DD@DDv/Įttʦ@Dh`j`D@DD@DDv@Įttʨ@DྠD@DD@DDvKĮttʨ@DྠD@DD@D`DvCĮttʨ@DྠD@DD@DDvNĮttʨ@DྠD@DD@D`DvAĮttʨ@DྠD@DD@DDvLĮttʨ@DྠD@DD@D`DvCĮttʨ@DྠD@DD@DDvNĮttʨ@DྠD@DD@D`Dv
\ No newline at end of file diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.make b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.make new file mode 100644 index 00000000..492fe887 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.make @@ -0,0 +1,269 @@ +#################################################################
+# Makefile generated by Xilinx Platform Studio
+# Project:C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PPC405_FPU_Xilinx_Virtex4_GCC\system.xmp
+#
+# WARNING : This file will be re-generated every time a command
+# to run a make target is invoked. So, any changes made to this
+# file manually, will be lost when make is invoked next.
+#################################################################
+
+# Name of the Microprocessor system
+# The hardware specification of the system is in file :
+# C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PPC405_FPU_Xilinx_Virtex4_GCC\system.mhs
+# The software specification of the system is in file :
+# C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PPC405_FPU_Xilinx_Virtex4_GCC\system.mss
+
+include system_incl.make
+
+#################################################################
+# PHONY TARGETS
+#################################################################
+.PHONY: dummy
+.PHONY: netlistclean
+.PHONY: bitsclean
+.PHONY: simclean
+.PHONY: vpclean
+
+#################################################################
+# EXTERNAL TARGETS
+#################################################################
+all:
+ @echo "Makefile to build a Microprocessor system :"
+ @echo "Run make with any of the following targets"
+ @echo " "
+ @echo " netlist : Generates the netlist for the given MHS "
+ @echo " bits : Runs Implementation tools to generate the bitstream"
+ @echo " "
+ @echo " libs : Configures the sw libraries for this system"
+ @echo " program : Compiles the program sources for all the processor instances"
+ @echo " "
+ @echo " init_bram: Initializes bitstream with BRAM data"
+ @echo " ace : Generate ace file from bitstream and elf"
+ @echo " download : Downloads the bitstream onto the board"
+ @echo " "
+ @echo " sim : Generates HDL simulation models and runs simulator for chosen simulation mode"
+ @echo " simmodel : Generates HDL simulation models for chosen simulation mode"
+ @echo " behavioral_model : Generates behavioral HDL models with BRAM initialization"
+ @echo " structural_model : Generates structural simulation HDL models with BRAM initialization"
+ @echo " timing : Generates timing simulation HDL models with BRAM initialization"
+ @echo " vp : Generates virtual platform model"
+ @echo " "
+ @echo " netlistclean: Deletes netlist"
+ @echo " bitsclean: Deletes bit, ncd, bmm files"
+ @echo " hwclean : Deletes implementation dir"
+ @echo " libsclean: Deletes sw libraries"
+ @echo " programclean: Deletes compiled ELF files"
+ @echo " swclean : Deletes sw libraries and ELF files"
+ @echo " simclean : Deletes simulation dir"
+ @echo " vpclean : Deletes virtualplatform dir"
+ @echo " clean : Deletes all generated files/directories"
+ @echo " "
+ @echo " make <target> : (Default)"
+ @echo " Creates a Microprocessor system using default initializations"
+ @echo " specified for each processor in MSS file"
+
+
+bits: $(SYSTEM_BIT)
+
+ace: $(SYSTEM_ACE)
+
+netlist: $(POSTSYN_NETLIST)
+
+libs: $(LIBRARIES)
+
+program: $(ALL_USER_ELF_FILES)
+
+download: $(DOWNLOAD_BIT) dummy
+ @echo "*********************************************"
+ @echo "Downloading Bitstream onto the target board"
+ @echo "*********************************************"
+ impact -batch etc/download.cmd
+
+init_bram: $(DOWNLOAD_BIT)
+
+sim: $(DEFAULT_SIM_SCRIPT)
+ cd simulation/behavioral; \
+ $(SIM_CMD) &
+
+simmodel: $(DEFAULT_SIM_SCRIPT)
+
+behavioral_model: $(BEHAVIORAL_SIM_SCRIPT)
+
+structural_model: $(STRUCTURAL_SIM_SCRIPT)
+
+vp: $(VPEXEC)
+
+clean: hwclean libsclean programclean simclean vpclean
+ rm -f _impact.cmd
+ rm -f *.log
+
+hwclean: netlistclean bitsclean
+ rm -rf implementation synthesis xst hdl
+ rm -rf xst.srp $(SYSTEM).srp
+
+netlistclean:
+ rm -f $(POSTSYN_NETLIST)
+ rm -f platgen.log
+ rm -f $(BMM_FILE)
+
+bitsclean:
+ rm -f $(SYSTEM_BIT)
+ rm -f implementation/$(SYSTEM).ncd
+ rm -f implementation/$(SYSTEM)_bd.bmm
+ rm -f implementation/$(SYSTEM)_map.ncd
+
+simclean:
+ rm -rf simulation/behavioral
+ rm -f simgen.log
+
+swclean: libsclean programclean
+ @echo ""
+
+libsclean: $(LIBSCLEAN_TARGETS)
+ rm -f libgen.log
+
+programclean: $(PROGRAMCLEAN_TARGETS)
+
+vpclean:
+ rm -rf virtualplatform
+ rm -f vpgen.log
+
+#################################################################
+# SOFTWARE PLATFORM FLOW
+#################################################################
+
+
+$(LIBRARIES): $(MHSFILE) $(MSSFILE) __xps/libgen.opt
+ @echo "*********************************************"
+ @echo "Creating software libraries..."
+ @echo "*********************************************"
+ libgen $(LIBGEN_OPTIONS) $(MSSFILE)
+
+
+ppc405_0_libsclean:
+ rm -rf ppc405_0/
+
+#################################################################
+# SOFTWARE APPLICATION RTOSDEMO
+#################################################################
+
+RTOSDemo_program: $(RTOSDEMO_OUTPUT)
+
+$(RTOSDEMO_OUTPUT) : $(RTOSDEMO_SOURCES) $(RTOSDEMO_HEADERS) $(RTOSDEMO_LINKER_SCRIPT) \
+ $(LIBRARIES) __xps/rtosdemo_compiler.opt
+ @mkdir -p $(RTOSDEMO_OUTPUT_DIR)
+ $(RTOSDEMO_CC) $(RTOSDEMO_CC_OPT) $(RTOSDEMO_SOURCES) -o $(RTOSDEMO_OUTPUT) \
+ $(RTOSDEMO_OTHER_CC_FLAGS) $(RTOSDEMO_INCLUDES) $(RTOSDEMO_LIBPATH) \
+ $(RTOSDEMO_CFLAGS) $(RTOSDEMO_LFLAGS)
+ $(RTOSDEMO_CC_SIZE) $(RTOSDEMO_OUTPUT)
+ @echo ""
+
+RTOSDemo_programclean:
+ rm -f $(RTOSDEMO_OUTPUT)
+
+#################################################################
+# BOOTLOOP ELF FILES
+#################################################################
+
+
+
+$(PPC405_0_BOOTLOOP): $(PPC405_BOOTLOOP)
+ @mkdir -p $(BOOTLOOP_DIR)
+ cp -f $(PPC405_BOOTLOOP) $(PPC405_0_BOOTLOOP)
+
+#################################################################
+# HARDWARE IMPLEMENTATION FLOW
+#################################################################
+
+
+$(BMM_FILE) \
+$(WRAPPER_NGC_FILES): $(MHSFILE) __xps/platgen.opt \
+ $(CORE_STATE_DEVELOPMENT_FILES)
+ @echo "****************************************************"
+ @echo "Creating system netlist for hardware specification.."
+ @echo "****************************************************"
+ platgen $(PLATGEN_OPTIONS) $(MHSFILE)
+
+$(POSTSYN_NETLIST): $(WRAPPER_NGC_FILES)
+ @echo "Running synthesis..."
+ bash -c "cd synthesis; ./synthesis.sh"
+
+__xps/$(SYSTEM)_routed: $(FPGA_IMP_DEPENDENCY)
+ @echo "*********************************************"
+ @echo "Running Xilinx Implementation tools.."
+ @echo "*********************************************"
+ @cp -f $(UCF_FILE) implementation/$(SYSTEM).ucf
+ xilperl $(NON_CYG_XILINX_EDK_DIR)/data/fpga_impl/manage_fastruntime_opt.pl $(MANAGE_FASTRT_OPTIONS)
+ xflow -wd implementation -p $(DEVICE) -implement xflow.opt $(SYSTEM).ngc
+ touch __xps/$(SYSTEM)_routed
+
+$(SYSTEM_BIT): __xps/$(SYSTEM)_routed
+ xilperl $(NON_CYG_XILINX_EDK_DIR)/data/fpga_impl/observe_par.pl $(OBSERVE_PAR_OPTIONS) implementation/$(SYSTEM).par
+ @echo "*********************************************"
+ @echo "Running Bitgen.."
+ @echo "*********************************************"
+ @cp -f $(BITGEN_UT_FILE) implementation/bitgen.ut
+ cd implementation; bitgen -w -f bitgen.ut $(SYSTEM)
+
+$(DOWNLOAD_BIT): $(SYSTEM_BIT) $(BRAMINIT_ELF_FILES) __xps/bitinit.opt
+ # @cp -f implementation/$(SYSTEM)_bd.bmm .
+ @echo "*********************************************"
+ @echo "Initializing BRAM contents of the bitstream"
+ @echo "*********************************************"
+ bitinit $(MHSFILE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_FILE_ARGS) \
+ -bt $(SYSTEM_BIT) -o $(DOWNLOAD_BIT)
+ @rm -f $(SYSTEM)_bd.bmm
+
+$(SYSTEM_ACE): $(DOWNLOAD_BIT) $(RTOSDEMO_OUTPUT)
+ @echo "*********************************************"
+ @echo "Creating system ace file"
+ @echo "*********************************************"
+ xmd -tcl genace.tcl -jprog -hw $(DOWNLOAD_BIT) -elf $(RTOSDEMO_OUTPUT) -target ppc_hw -ace $(SYSTEM_ACE)
+
+#################################################################
+# SIMULATION FLOW
+#################################################################
+
+
+################## BEHAVIORAL SIMULATION ##################
+
+$(BEHAVIORAL_SIM_SCRIPT): $(MHSFILE) __xps/simgen.opt \
+ $(BRAMINIT_ELF_FILES)
+ @echo "*********************************************"
+ @echo "Creating behavioral simulation models..."
+ @echo "*********************************************"
+ simgen $(SIMGEN_OPTIONS) -m behavioral $(MHSFILE)
+
+################## STRUCTURAL SIMULATION ##################
+
+$(STRUCTURAL_SIM_SCRIPT): $(WRAPPER_NGC_FILES) __xps/simgen.opt \
+ $(BRAMINIT_ELF_FILES)
+ @echo "*********************************************"
+ @echo "Creating structural simulation models..."
+ @echo "*********************************************"
+ simgen $(SIMGEN_OPTIONS) -sd implementation -m structural $(MHSFILE)
+
+
+################## TIMING SIMULATION ##################
+
+$(TIMING_SIM_SCRIPT): $(SYSTEM_BIT) __xps/simgen.opt \
+ $(BRAMINIT_ELF_FILES)
+ @echo "*********************************************"
+ @echo "Creating timing simulation models..."
+ @echo "*********************************************"
+ simgen $(SIMGEN_OPTIONS) -sd implementation -m timing $(MHSFILE)
+
+#################################################################
+# VIRTUAL PLATFORM FLOW
+#################################################################
+
+
+$(VPEXEC): $(MHSFILE) __xps/vpgen.opt
+ @echo "****************************************************"
+ @echo "Creating virtual platform for hardware specification.."
+ @echo "****************************************************"
+ vpgen $(VPGEN_OPTIONS) $(MHSFILE)
+
+dummy:
+ @echo ""
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.mhs b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.mhs new file mode 100644 index 00000000..640fae03 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.mhs @@ -0,0 +1,225 @@ +
+# ##############################################################################
+# Created by Base System Builder Wizard for Xilinx EDK 10.1.01 Build EDK_K_SP1.3
+# Fri May 09 11:01:33 2008
+# Target Board: Xilinx Virtex 4 ML403 Evaluation Platform Rev 1
+# Family: virtex4
+# Device: xc4vfx12
+# Package: ff668
+# Speed Grade: -10
+# Processor: ppc405_0
+# Processor clock frequency: 200.00 MHz
+# Bus clock frequency: 100.00 MHz
+# Total Off Chip Memory : 1 MB
+# - SRAM = 1 MB
+# ##############################################################################
+ PARAMETER VERSION = 2.1.0
+
+
+ PORT fpga_0_RS232_Uart_RX_pin = fpga_0_RS232_Uart_RX, DIR = I
+ PORT fpga_0_RS232_Uart_TX_pin = fpga_0_RS232_Uart_TX, DIR = O
+ PORT fpga_0_LEDs_4Bit_GPIO_IO_pin = fpga_0_LEDs_4Bit_GPIO_IO, DIR = IO, VEC = [0:3]
+ PORT fpga_0_LEDs_Positions_GPIO_IO_pin = fpga_0_LEDs_Positions_GPIO_IO, DIR = IO, VEC = [0:4]
+ PORT fpga_0_SysACE_CompactFlash_SysACE_CLK_pin = fpga_0_SysACE_CompactFlash_SysACE_CLK, DIR = I
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPA_pin = fpga_0_SysACE_CompactFlash_SysACE_MPA, DIR = O, VEC = [6:1]
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPD_pin = fpga_0_SysACE_CompactFlash_SysACE_MPD, DIR = IO, VEC = [15:0]
+ PORT fpga_0_SysACE_CompactFlash_SysACE_CEN_pin = fpga_0_SysACE_CompactFlash_SysACE_CEN, DIR = O
+ PORT fpga_0_SysACE_CompactFlash_SysACE_OEN_pin = fpga_0_SysACE_CompactFlash_SysACE_OEN, DIR = O
+ PORT fpga_0_SysACE_CompactFlash_SysACE_WEN_pin = fpga_0_SysACE_CompactFlash_SysACE_WEN, DIR = O
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin = fpga_0_SysACE_CompactFlash_SysACE_MPIRQ, DIR = I
+ PORT fpga_0_SRAM_Mem_A_pin = fpga_0_SRAM_Mem_A, DIR = O, VEC = [9:29]
+ PORT fpga_0_SRAM_Mem_BEN_pin = fpga_0_SRAM_Mem_BEN, DIR = O, VEC = [0:3]
+ PORT fpga_0_SRAM_Mem_WEN_pin = fpga_0_SRAM_Mem_WEN, DIR = O
+ PORT fpga_0_SRAM_Mem_DQ_pin = fpga_0_SRAM_Mem_DQ, DIR = IO, VEC = [0:31]
+ PORT fpga_0_SRAM_Mem_OEN_pin = fpga_0_SRAM_Mem_OEN, DIR = O, VEC = [0:0]
+ PORT fpga_0_SRAM_Mem_CEN_pin = fpga_0_SRAM_Mem_CEN, DIR = O, VEC = [0:0]
+ PORT fpga_0_SRAM_Mem_ADV_LDN_pin = fpga_0_SRAM_Mem_ADV_LDN, DIR = O
+ PORT fpga_0_SRAM_CLOCK = sys_clk_s, DIR = O
+ PORT sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000
+ PORT sys_rst_pin = sys_rst_s, DIR = I, RST_POLARITY = 0, SIGIS = RST
+
+
+BEGIN ppc405_virtex4
+ PARAMETER INSTANCE = ppc405_0
+ PARAMETER HW_VER = 2.01.a
+ PARAMETER C_FASTEST_PLB_CLOCK = DPLB0
+ PARAMETER C_APU_CONTROL = 0b0000000000000001
+ PARAMETER C_IDCR_BASEADDR = 0b0100000000
+ PARAMETER C_IDCR_HIGHADDR = 0b0111111111
+ BUS_INTERFACE JTAGPPC = jtagppc_0_0
+ BUS_INTERFACE IPLB0 = plb
+ BUS_INTERFACE DPLB0 = plb
+ BUS_INTERFACE RESETPPC = ppc_reset_bus
+ BUS_INTERFACE MFCB = fcb_v10_0
+ PORT CPMC405CLOCK = proc_clk_s
+ PORT EICC405EXTINPUTIRQ = EICC405EXTINPUTIRQ
+END
+
+BEGIN jtagppc_cntlr
+ PARAMETER INSTANCE = jtagppc_0
+ PARAMETER HW_VER = 2.01.a
+ BUS_INTERFACE JTAGPPC0 = jtagppc_0_0
+END
+
+BEGIN plb_v46
+ PARAMETER INSTANCE = plb
+ PARAMETER C_DCR_INTFCE = 0
+ PARAMETER C_NUM_CLK_PLB2OPB_REARB = 100
+ PARAMETER HW_VER = 1.02.a
+ PORT PLB_Clk = sys_clk_s
+ PORT SYS_Rst = sys_bus_reset
+END
+
+BEGIN xps_uartlite
+ PARAMETER INSTANCE = RS232_Uart
+ PARAMETER HW_VER = 1.00.a
+ PARAMETER C_BAUDRATE = 9600
+ PARAMETER C_DATA_BITS = 8
+ PARAMETER C_ODD_PARITY = 0
+ PARAMETER C_USE_PARITY = 0
+ PARAMETER C_SPLB_CLK_FREQ_HZ = 100000000
+ PARAMETER C_BASEADDR = 0x84000000
+ PARAMETER C_HIGHADDR = 0x8400ffff
+ BUS_INTERFACE SPLB = plb
+ PORT RX = fpga_0_RS232_Uart_RX
+ PORT TX = fpga_0_RS232_Uart_TX
+ PORT Interrupt = RS232_Uart_Interrupt
+END
+
+BEGIN xps_gpio
+ PARAMETER INSTANCE = LEDs_4Bit
+ PARAMETER HW_VER = 1.00.a
+ PARAMETER C_GPIO_WIDTH = 4
+ PARAMETER C_IS_DUAL = 0
+ PARAMETER C_IS_BIDIR = 1
+ PARAMETER C_ALL_INPUTS = 0
+ PARAMETER C_BASEADDR = 0x81400000
+ PARAMETER C_HIGHADDR = 0x8140ffff
+ BUS_INTERFACE SPLB = plb
+ PORT GPIO_IO = fpga_0_LEDs_4Bit_GPIO_IO
+END
+
+BEGIN xps_gpio
+ PARAMETER INSTANCE = LEDs_Positions
+ PARAMETER HW_VER = 1.00.a
+ PARAMETER C_GPIO_WIDTH = 5
+ PARAMETER C_IS_DUAL = 0
+ PARAMETER C_IS_BIDIR = 1
+ PARAMETER C_ALL_INPUTS = 0
+ PARAMETER C_BASEADDR = 0x81420000
+ PARAMETER C_HIGHADDR = 0x8142ffff
+ BUS_INTERFACE SPLB = plb
+ PORT GPIO_IO = fpga_0_LEDs_Positions_GPIO_IO
+END
+
+BEGIN xps_sysace
+ PARAMETER INSTANCE = SysACE_CompactFlash
+ PARAMETER HW_VER = 1.00.a
+ PARAMETER C_MEM_WIDTH = 16
+ PARAMETER C_BASEADDR = 0x83600000
+ PARAMETER C_HIGHADDR = 0x8360ffff
+ BUS_INTERFACE SPLB = plb
+ PORT SysACE_CLK = fpga_0_SysACE_CompactFlash_SysACE_CLK
+ PORT SysACE_MPA = fpga_0_SysACE_CompactFlash_SysACE_MPA & SysACE_CompactFlash_SysACE_MPA
+ PORT SysACE_MPD = fpga_0_SysACE_CompactFlash_SysACE_MPD
+ PORT SysACE_CEN = fpga_0_SysACE_CompactFlash_SysACE_CEN
+ PORT SysACE_OEN = fpga_0_SysACE_CompactFlash_SysACE_OEN
+ PORT SysACE_WEN = fpga_0_SysACE_CompactFlash_SysACE_WEN
+ PORT SysACE_MPIRQ = fpga_0_SysACE_CompactFlash_SysACE_MPIRQ
+END
+
+BEGIN xps_mch_emc
+ PARAMETER INSTANCE = SRAM
+ PARAMETER HW_VER = 1.01.a
+ PARAMETER C_MCH_PLB_CLK_PERIOD_PS = 10000
+ PARAMETER C_NUM_BANKS_MEM = 1
+ PARAMETER C_MAX_MEM_WIDTH = 32
+ PARAMETER C_INCLUDE_NEGEDGE_IOREGS = 1
+ PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 1
+ PARAMETER C_MEM0_WIDTH = 32
+ PARAMETER C_SYNCH_MEM_0 = 1
+ PARAMETER C_TCEDV_PS_MEM_0 = 0
+ PARAMETER C_TWC_PS_MEM_0 = 0
+ PARAMETER C_TAVDV_PS_MEM_0 = 0
+ PARAMETER C_TWP_PS_MEM_0 = 0
+ PARAMETER C_THZCE_PS_MEM_0 = 0
+ PARAMETER C_TLZWE_PS_MEM_0 = 0
+ PARAMETER C_MEM0_BASEADDR = 0xfff00000
+ PARAMETER C_MEM0_HIGHADDR = 0xffffffff
+ BUS_INTERFACE SPLB = plb
+ PORT Mem_A = fpga_0_SRAM_Mem_A_split
+ PORT Mem_BEN = fpga_0_SRAM_Mem_BEN
+ PORT Mem_WEN = fpga_0_SRAM_Mem_WEN
+ PORT Mem_DQ = fpga_0_SRAM_Mem_DQ
+ PORT Mem_OEN = fpga_0_SRAM_Mem_OEN
+ PORT Mem_CEN = fpga_0_SRAM_Mem_CEN
+ PORT Mem_ADV_LDN = fpga_0_SRAM_Mem_ADV_LDN
+ PORT RdClk = sys_clk_s
+END
+
+BEGIN util_bus_split
+ PARAMETER INSTANCE = SRAM_util_bus_split_0
+ PARAMETER HW_VER = 1.00.a
+ PARAMETER C_SIZE_IN = 32
+ PARAMETER C_LEFT_POS = 9
+ PARAMETER C_SPLIT = 30
+ PORT Sig = fpga_0_SRAM_Mem_A_split
+ PORT Out1 = fpga_0_SRAM_Mem_A
+END
+
+BEGIN clock_generator
+ PARAMETER INSTANCE = clock_generator_0
+ PARAMETER HW_VER = 2.01.a
+ PARAMETER C_EXT_RESET_HIGH = 1
+ PARAMETER C_CLKIN_FREQ = 100000000
+ PARAMETER C_CLKOUT0_FREQ = 200000000
+ PARAMETER C_CLKOUT0_BUF = TRUE
+ PARAMETER C_CLKOUT0_PHASE = 0
+ PARAMETER C_CLKOUT0_GROUP = NONE
+ PARAMETER C_CLKOUT1_FREQ = 100000000
+ PARAMETER C_CLKOUT1_BUF = TRUE
+ PARAMETER C_CLKOUT1_PHASE = 0
+ PARAMETER C_CLKOUT1_GROUP = NONE
+ PORT CLKOUT0 = proc_clk_s
+ PORT CLKOUT1 = sys_clk_s
+ PORT CLKIN = dcm_clk_s
+ PORT LOCKED = Dcm_all_locked
+ PORT RST = net_gnd
+END
+
+BEGIN proc_sys_reset
+ PARAMETER INSTANCE = proc_sys_reset_0
+ PARAMETER HW_VER = 2.00.a
+ PARAMETER C_EXT_RESET_HIGH = 0
+ BUS_INTERFACE RESETPPC0 = ppc_reset_bus
+ PORT Slowest_sync_clk = sys_clk_s
+ PORT Dcm_locked = Dcm_all_locked
+ PORT Ext_Reset_In = sys_rst_s
+ PORT Bus_Struct_Reset = sys_bus_reset
+ PORT Peripheral_Reset = sys_periph_reset
+END
+
+BEGIN xps_intc
+ PARAMETER INSTANCE = xps_intc_0
+ PARAMETER HW_VER = 1.00.a
+ PARAMETER C_BASEADDR = 0x81800000
+ PARAMETER C_HIGHADDR = 0x8180ffff
+ BUS_INTERFACE SPLB = plb
+ PORT Irq = EICC405EXTINPUTIRQ
+ PORT Intr = RS232_Uart_Interrupt
+END
+
+BEGIN fcb_v10
+ PARAMETER INSTANCE = fcb_v10_0
+ PARAMETER HW_VER = 1.00.a
+ PORT FCB_CLK = proc_clk_s
+ PORT SYS_RST = sys_bus_reset
+END
+
+BEGIN apu_fpu
+ PARAMETER INSTANCE = apu_fpu_0
+ PARAMETER HW_VER = 3.10.a
+ BUS_INTERFACE SFCB = fcb_v10_0
+ PORT FPU_CLK = sys_clk_s
+END
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.mss b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.mss new file mode 100644 index 00000000..737c3084 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.mss @@ -0,0 +1,88 @@ +
+ PARAMETER VERSION = 2.2.0
+
+
+BEGIN OS
+ PARAMETER OS_NAME = standalone
+ PARAMETER OS_VER = 2.00.a
+ PARAMETER PROC_INSTANCE = ppc405_0
+END
+
+
+BEGIN PROCESSOR
+ PARAMETER DRIVER_NAME = cpu_ppc405
+ PARAMETER DRIVER_VER = 1.10.a
+ PARAMETER HW_INSTANCE = ppc405_0
+ PARAMETER COMPILER = powerpc-eabi-gcc
+ PARAMETER ARCHIVER = powerpc-eabi-ar
+ PARAMETER CORE_CLOCK_FREQ_HZ = 200000000
+END
+
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = generic
+ PARAMETER DRIVER_VER = 1.00.a
+ PARAMETER HW_INSTANCE = jtagppc_0
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = uartlite
+ PARAMETER DRIVER_VER = 1.13.a
+ PARAMETER HW_INSTANCE = RS232_Uart
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = gpio
+ PARAMETER DRIVER_VER = 2.12.a
+ PARAMETER HW_INSTANCE = LEDs_4Bit
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = gpio
+ PARAMETER DRIVER_VER = 2.12.a
+ PARAMETER HW_INSTANCE = LEDs_Positions
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = sysace
+ PARAMETER DRIVER_VER = 1.11.a
+ PARAMETER HW_INSTANCE = SysACE_CompactFlash
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = emc
+ PARAMETER DRIVER_VER = 2.00.a
+ PARAMETER HW_INSTANCE = SRAM
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = generic
+ PARAMETER DRIVER_VER = 1.00.a
+ PARAMETER HW_INSTANCE = SRAM_util_bus_split_0
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = generic
+ PARAMETER DRIVER_VER = 1.00.a
+ PARAMETER HW_INSTANCE = clock_generator_0
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = generic
+ PARAMETER DRIVER_VER = 1.00.a
+ PARAMETER HW_INSTANCE = proc_sys_reset_0
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = intc
+ PARAMETER DRIVER_VER = 1.11.a
+ PARAMETER HW_INSTANCE = xps_intc_0
+END
+
+BEGIN DRIVER
+ PARAMETER DRIVER_NAME = apu_fpu
+ PARAMETER DRIVER_VER = 2.10.a
+ PARAMETER HW_INSTANCE = apu_fpu_0
+END
+
+
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.xmp b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.xmp new file mode 100644 index 00000000..0e1cb57a --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system.xmp @@ -0,0 +1,74 @@ +#Please do not modify this file by hand
+XmpVersion: 10.1.01
+VerMgmt: 10.1.01
+IntStyle: default
+MHS File: system.mhs
+MSS File: system.mss
+NPL File: projnav/system.ise
+Architecture: virtex4
+Device: xc4vfx12
+Package: ff668
+SpeedGrade: -10
+UserCmd1:
+UserCmd1Type: 0
+UserCmd2:
+UserCmd2Type: 0
+TopInst: system_i
+GenSimTB: 0
+InsertNoPads: 0
+WarnForEAArch: 1
+HdlLang: VHDL
+Simulator: mti
+SimModel: BEHAVIORAL
+MixLangSim: 1
+UcfFile: data/system.ucf
+FpgaImpMode: 0
+EnableParTimingError: 1
+EnableResetOptimization: 0
+ShowLicenseDialog: 1
+ICacheAddr: SRAM,
+DCacheAddr: SRAM,
+Processor: ppc405_0
+BootLoop: 1
+XmdStub: 0
+SwProj: RTOSDemo
+Processor: ppc405_0
+Executable: RTOSDemo/executable.elf
+Source: RTOSDemo/../../Common/Minimal/BlockQ.c
+Source: RTOSDemo/../../Common/Minimal/blocktim.c
+Source: RTOSDemo/../../Common/Minimal/comtest.c
+Source: RTOSDemo/../../Common/Minimal/countsem.c
+Source: RTOSDemo/../../Common/Minimal/death.c
+Source: RTOSDemo/../../Common/Minimal/dynamic.c
+Source: RTOSDemo/../../Common/Minimal/flash.c
+Source: RTOSDemo/../../Common/Minimal/GenQTest.c
+Source: RTOSDemo/../../Common/Minimal/integer.c
+Source: RTOSDemo/../../Common/Minimal/QPeek.c
+Source: RTOSDemo/../../Common/Minimal/recmutex.c
+Source: RTOSDemo/../../Common/Minimal/semtest.c
+Source: RTOSDemo/../../../Source/tasks.c
+Source: RTOSDemo/../../../Source/list.c
+Source: RTOSDemo/../../../Source/queue.c
+Source: RTOSDemo/../../../Source/portable/GCC/PPC405_Xilinx/port.c
+Source: RTOSDemo/main.c
+Source: RTOSDemo/serial/serial.c
+Source: RTOSDemo/partest/partest.c
+Source: RTOSDemo/../../../Source/portable/GCC/PPC405_Xilinx/portasm.S
+Source: RTOSDemo/../../../Source/portable/MemMang/heap_2.c
+Source: RTOSDemo/flop/flop.c
+Source: RTOSDemo/flop/flop-reg-test.c
+Header: RTOSDemo/FreeRTOSConfig.h
+DefaultInit: EXECUTABLE
+InitBram: 0
+Active: 1
+CompilerOptLevel: 0
+GlobPtrOpt: 0
+DebugSym: 1
+ProfileFlag: 0
+ProgStart:
+StackSize:
+HeapSize:
+LinkerScript: RTOSDemo/RTOSDemo_linker_script.ld
+ProgCCFlags: -I./RTOSDemo/flop -I../../Source/portable/GCC/PPC405_Xilinx -I./ppc405_0/include/ -IRTOSDemo/ -I. -I./RTOSDemo/ -I../Common/include/ -I../../Source/include/ -I./ppc405_0/include/ -I./ppc405_0/include -D GCC_PPC405 -mregnames -Wextra
+CompileInXps: 1
+NonXpsApp: 0
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system_incl.make b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system_incl.make new file mode 100644 index 00000000..4c29d2d2 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/system_incl.make @@ -0,0 +1,144 @@ +#################################################################
+# Makefile generated by Xilinx Platform Studio
+# Project:C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PPC405_FPU_Xilinx_Virtex4_GCC\system.xmp
+#
+# WARNING : This file will be re-generated every time a command
+# to run a make target is invoked. So, any changes made to this
+# file manually, will be lost when make is invoked next.
+#################################################################
+
+XILINX_EDK_DIR = /cygdrive/c/devtools/Xilinx/10.1/EDK
+NON_CYG_XILINX_EDK_DIR = C:/devtools/Xilinx/10.1/EDK
+
+SYSTEM = system
+
+MHSFILE = system.mhs
+
+MSSFILE = system.mss
+
+FPGA_ARCH = virtex4
+
+DEVICE = xc4vfx12ff668-10
+
+LANGUAGE = vhdl
+
+SEARCHPATHOPT =
+
+SUBMODULE_OPT =
+
+PLATGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(SUBMODULE_OPT)
+
+LIBGEN_OPTIONS = -mhs $(MHSFILE) -p $(DEVICE) $(SEARCHPATHOPT)
+
+VPGEN_OPTIONS = -p $(DEVICE) $(SEARCHPATHOPT)
+
+MANAGE_FASTRT_OPTIONS = -reduce_fanout no
+
+OBSERVE_PAR_OPTIONS = -error yes
+
+RTOSDEMO_OUTPUT_DIR = RTOSDemo
+RTOSDEMO_OUTPUT = $(RTOSDEMO_OUTPUT_DIR)/executable.elf
+
+MICROBLAZE_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/microblaze/mb_bootloop.elf
+PPC405_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/ppc405/ppc_bootloop.elf
+PPC440_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/ppc440/ppc440_bootloop.elf
+BOOTLOOP_DIR = bootloops
+
+PPC405_0_BOOTLOOP = $(BOOTLOOP_DIR)/ppc405_0.elf
+
+BRAMINIT_ELF_FILES =
+BRAMINIT_ELF_FILE_ARGS =
+
+ALL_USER_ELF_FILES = $(RTOSDEMO_OUTPUT)
+
+SIM_CMD = vsim
+
+BEHAVIORAL_SIM_SCRIPT = simulation/behavioral/$(SYSTEM)_setup.do
+
+STRUCTURAL_SIM_SCRIPT = simulation/structural/$(SYSTEM)_setup.do
+
+TIMING_SIM_SCRIPT = simulation/timing/$(SYSTEM)_setup.do
+
+DEFAULT_SIM_SCRIPT = $(BEHAVIORAL_SIM_SCRIPT)
+
+MIX_LANG_SIM_OPT = -mixed yes
+
+SIMGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_FILE_ARGS) $(MIX_LANG_SIM_OPT) -s mti -X ./ -E ./
+
+
+LIBRARIES = \
+ ppc405_0/lib/libxil.a
+VPEXEC = virtualplatform/vpexec.exe
+
+LIBSCLEAN_TARGETS = ppc405_0_libsclean
+
+PROGRAMCLEAN_TARGETS = RTOSDemo_programclean
+
+CORE_STATE_DEVELOPMENT_FILES =
+
+WRAPPER_NGC_FILES = implementation/ppc405_0_wrapper.ngc \ +implementation/jtagppc_0_wrapper.ngc \ +implementation/plb_wrapper.ngc \ +implementation/rs232_uart_wrapper.ngc \ +implementation/leds_4bit_wrapper.ngc \ +implementation/leds_positions_wrapper.ngc \ +implementation/sysace_compactflash_wrapper.ngc \ +implementation/sram_wrapper.ngc \ +implementation/sram_util_bus_split_0_wrapper.ngc \ +implementation/clock_generator_0_wrapper.ngc \ +implementation/proc_sys_reset_0_wrapper.ngc \ +implementation/xps_intc_0_wrapper.ngc \ +implementation/fcb_v10_0_wrapper.ngc \ +implementation/apu_fpu_0_wrapper.ngc
+
+POSTSYN_NETLIST = implementation/$(SYSTEM).ngc
+
+SYSTEM_BIT = implementation/$(SYSTEM).bit
+
+DOWNLOAD_BIT = implementation/download.bit
+
+SYSTEM_ACE = implementation/$(SYSTEM).ace
+
+UCF_FILE = data/system.ucf
+
+BMM_FILE = implementation/$(SYSTEM).bmm
+
+BITGEN_UT_FILE = etc/bitgen.ut
+
+XFLOW_OPT_FILE = etc/fast_runtime.opt
+XFLOW_DEPENDENCY = __xps/xpsxflow.opt $(XFLOW_OPT_FILE)
+
+XPLORER_DEPENDENCY = __xps/xplorer.opt
+XPLORER_OPTIONS = -p $(DEVICE) -uc $(SYSTEM).ucf -bm $(SYSTEM).bmm -max_runs 7
+
+FPGA_IMP_DEPENDENCY = $(BMM_FILE) $(POSTSYN_NETLIST) $(UCF_FILE) $(BITGEN_UT_FILE) $(XFLOW_DEPENDENCY)
+
+#################################################################
+# SOFTWARE APPLICATION RTOSDEMO
+#################################################################
+
+RTOSDEMO_SOURCES = RTOSDemo/../../Common/Minimal/BlockQ.c RTOSDemo/../../Common/Minimal/blocktim.c RTOSDemo/../../Common/Minimal/comtest.c RTOSDemo/../../Common/Minimal/countsem.c RTOSDemo/../../Common/Minimal/death.c RTOSDemo/../../Common/Minimal/dynamic.c RTOSDemo/../../Common/Minimal/flash.c RTOSDemo/../../Common/Minimal/GenQTest.c RTOSDemo/../../Common/Minimal/integer.c RTOSDemo/../../Common/Minimal/QPeek.c RTOSDemo/../../Common/Minimal/recmutex.c RTOSDemo/../../Common/Minimal/semtest.c RTOSDemo/../../../Source/tasks.c RTOSDemo/../../../Source/list.c RTOSDemo/../../../Source/queue.c RTOSDemo/../../../Source/portable/GCC/PPC405_Xilinx/port.c RTOSDemo/main.c RTOSDemo/serial/serial.c RTOSDemo/partest/partest.c RTOSDemo/../../../Source/portable/GCC/PPC405_Xilinx/portasm.S RTOSDemo/../../../Source/portable/MemMang/heap_2.c RTOSDemo/flop/flop.c RTOSDemo/flop/flop-reg-test.c
+
+RTOSDEMO_HEADERS = RTOSDemo/FreeRTOSConfig.h
+
+RTOSDEMO_CC = powerpc-eabi-gcc
+RTOSDEMO_CC_SIZE = powerpc-eabi-size
+RTOSDEMO_CC_OPT = -O0
+RTOSDEMO_CFLAGS = -I./RTOSDemo/flop -I../../Source/portable/GCC/PPC405_Xilinx -I./ppc405_0/include/ -IRTOSDemo/ -I. -I./RTOSDemo/ -I../Common/include/ -I../../Source/include/ -I./ppc405_0/include/ -I./ppc405_0/include -D GCC_PPC405 -mregnames -Wextra
+RTOSDEMO_CC_SEARCH = # -B
+RTOSDEMO_LIBPATH = -L./ppc405_0/lib/ # -L
+RTOSDEMO_INCLUDES = -I./ppc405_0/include/ -IRTOSDemo/ # -I
+RTOSDEMO_LFLAGS = # -l
+RTOSDEMO_LINKER_SCRIPT = RTOSDemo/RTOSDemo_linker_script.ld
+RTOSDEMO_LINKER_SCRIPT_FLAG = -Wl,-T -Wl,$(RTOSDEMO_LINKER_SCRIPT)
+RTOSDEMO_CC_DEBUG_FLAG = -g
+RTOSDEMO_CC_PROFILE_FLAG = # -pg
+RTOSDEMO_CC_GLOBPTR_FLAG= # -msdata=eabi
+RTOSDEMO_CC_INFERRED_FLAGS= -mfpu=sp_full
+RTOSDEMO_CC_START_ADDR_FLAG= # # -Wl,-defsym -Wl,_START_ADDR=
+RTOSDEMO_CC_STACK_SIZE_FLAG= # # -Wl,-defsym -Wl,_STACK_SIZE=
+RTOSDEMO_CC_HEAP_SIZE_FLAG= # # -Wl,-defsym -Wl,_HEAP_SIZE=
+RTOSDEMO_OTHER_CC_FLAGS= $(RTOSDEMO_CC_GLOBPTR_FLAG) \
+ $(RTOSDEMO_CC_START_ADDR_FLAG) $(RTOSDEMO_CC_STACK_SIZE_FLAG) $(RTOSDEMO_CC_HEAP_SIZE_FLAG) \
+ $(RTOSDEMO_CC_INFERRED_FLAGS) \
+ $(RTOSDEMO_LINKER_SCRIPT_FLAG) $(RTOSDEMO_CC_DEBUG_FLAG) $(RTOSDEMO_CC_PROFILE_FLAG)
diff --git a/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/wizlog b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/wizlog new file mode 100644 index 00000000..3f4f4839 --- /dev/null +++ b/Demo/PPC405_FPU_Xilinx_Virtex4_GCC/wizlog @@ -0,0 +1,3 @@ +WARNING:MDT - ppc405_virtex4 (ppc405_0) -
+ C:\E\Dev\FreeRTOS\WorkingCopy2\Demo\PPC405_FPU_Xilinx_Virtex4_GCC\dump.mhs
+ line 28 - ADDRESS specified by PARAMETER C_IDCR_BASEADDR is ignored |