Remove the incomplete MicroBlaze with full ethernet and tracecon facility ready for V7.1.0 update.

This commit is contained in:
Richard Barry 2011-12-13 15:41:55 +00:00
parent 1ec172e0e0
commit 8f3b797d29
103 changed files with 0 additions and 50762 deletions

View File

@ -1,12 +0,0 @@
PARAMETER VERSION = 2.2.0
BEGIN OS
PARAMETER OS_NAME = freertos
PARAMETER STDIN = *
PARAMETER STDOUT = *
PARAMETER SYSTMR_SPEC = true
PARAMETER SYSTMR_DEV = *
PARAMETER SYSINTC_SPEC = *
END

View File

@ -1,101 +0,0 @@
##############################################################################
#
# (c) Copyright 2011 Xilinx, Inc. All rights reserved.
#
# This file contains confidential and proprietary information of Xilinx, Inc.
# and is protected under U.S. and international copyright and other
# intellectual property laws.
#
# DISCLAIMER
# This disclaimer is not a license and does not grant any rights to the
# materials distributed herewith. Except as otherwise provided in a valid
# license issued to you by Xilinx, and to the maximum extent permitted by
# applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL
# FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,
# IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
# MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;
# and (2) Xilinx shall not be liable (whether in contract or tort, including
# negligence, or under any other theory of liability) for any loss or damage
# of any kind or nature related to, arising under or in connection with these
# materials, including for any direct, or any indirect, special, incidental,
# or consequential loss or damage (including loss of data, profits, goodwill,
# or any type of loss or damage suffered as a result of any action brought by
# a third party) even if such damage or loss was reasonably foreseeable or
# Xilinx had been advised of the possibility of the same.
#
# CRITICAL APPLICATIONS
# Xilinx products are not designed or intended to be fail-safe, or for use in
# any application requiring fail-safe performance, such as life-support or
# safety devices or systems, Class III medical devices, nuclear facilities,
# applications related to the deployment of airbags, or any other applications
# that could lead to death, personal injury, or severe property or
# environmental damage (individually and collectively, "Critical
# Applications"). Customer assumes the sole risk and liability of any use of
# Xilinx products in Critical Applications, subject only to applicable laws
# and regulations governing limitations on product liability.
#
# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE
# AT ALL TIMES.
#
# This file is part of Xilkernel.
#
# $Id: xilkernel_v2_1_0.mld,v 1.1.2.4 2010/12/10 07:27:08 svemula Exp $
###############################################################################
OPTION psf_version = 2.1.0 ;
BEGIN OS freertos
OPTION DRC = kernel_drc ;
OPTION SUPPORTED_PERIPHERALS = (microblaze);
OPTION COPYFILES = all;
OPTION DEPENDS = (standalone_v3_01_a);
OPTION APP_LINKER_FLAGS = "-Wl,--start-group,-lxil,-lfreertos,-lgcc,-lc,--end-group";
OPTION DESC = "FreeRTOS is a popular lightweight kernel."
# STDIN/STDOUT
PARAM name = stdin, type = peripheral_instance, requires_interface = stdin, default=none, desc = "Specify the instance name of the standard input peripheral";
PARAM name = stdout, type = peripheral_instance, requires_interface = stdout, default=none, desc = "Specify the instance name of the standard output peripheral";
# System timer specification
PARAM name = systmr_interval, type = int, default = 10, desc = "Specify the time interval for each kernel tick (in milliseconds). This controls the CPU budget for each process. If the timer is fit_timer, then this parameter is automatically determined";
# System interrupt controller specification
# PARAM name = sysintc_spec, type = peripheral_instance, range = (opb_intc, xps_intc, dcr_intc, axi_intc), default = none, desc = "Specify the instance name of the interrupt controller device driving system interrupts";
BEGIN CATEGORY kernel_behavior
PARAM name = kernel_behavior, type = bool, default = true, desc = "Parameters relating to the kernel behavior", permit = user;
PARAM name = use_preemption, type = bool, default = true, desc = "Set to true to use the preemptive scheduler, or false to use the cooperative scheduler.";
PARAM name = idle_yield, type = bool, default = true, desc = "Set to true if the Idle task should yield if another idle priority task is able to run, or false if the idle task should always use its entire time slice unless it is preempted.";
PARAM name = max_priorities, type = int, default = 4, desc = "The number of task priorities that will be available. Priorities can be assigned from zero to (max_priorities - 1)";
PARAM name = minimal_stack_size, type = int, default = 120, desc = "The size of the stack allocated to the Idle task. Also used by standard demo and test tasks found in the main FreeRTOS download.";
PARAM name = total_heap_size, type = int, default = 65536, desc = "Only used if heap_1.c or heap_2.c is included in the project. Sets the amount of RAM reserved for use by the kernel - used when tasks, queues and semaphores are created.";
PARAM name = max_task_name_len, type = int, default = 8, desc = "The maximum number of characters that can be in the name of a task.";
END CATEGORY
BEGIN CATEGORY kernel_features
PARAM name = kernel_features, type = bool, default = true, desc = "Include or exclude kernel features", permit = user;
PARAM name = use_mutexes, type = bool, default = true, desc = "Set to true to include mutex functionality, or false to exclude mutex functionality.";
PARAM name = use_recursive_mutexes, type = bool, default = true, desc = "Set to true to include recursive mutex functionality, or false to exclude recursive mutex functionality.";
PARAM name = use_counting_semaphores, type = bool, default = true, desc = "Set to true to include counting semaphore functionality, or false to exclude recursive mutex functionality.";
PARAM name = queue_registry_size, type = int, default = 10, desc = "The maximum number of queues that can be registered at any one time. Registered queues can be viewed in the kernel aware debugger plug-in.";
PARAM name = use_trace_facility, type = bool, default = true, desc = "Set to true to include the legacy trace functionality, and a few other features. traceMACROS are the preferred method of tracing now.";
END CATEGORY
BEGIN CATEGORY hook_functions
PARAM name = hook_functions, type = bool, default = true, desc = "Include or exclude application defined hook (callback) functions. Callback functions must be defined by the application that is using FreeRTOS", permit = user;
PARAM name = use_idle_hook, type = bool, default = false, desc = "Set to true for the kernel to call vApplicationIdleHook() on each iteration of the idle task. The application must provide an implementation of vApplicationIdleHook().";
PARAM name = use_tick_hook, type = bool, default = false, desc = "Set to true for the kernel to call vApplicationTickHook() during each tick interrupt. The application must provide an implementation of vApplicationTickHook().";
PARAM name = use_malloc_failed_hook, type = bool, default = true, desc = "Only used if heap_1.c, heap_2.c or heap_3.c is included in the project. Set to true for the kernel to call vApplicationMallocFailedHookHook() if there is insufficient FreeRTOS heap available for a task, queue or semaphore to be created. The application must provide an implementation of vApplicationMallocFailedHook().";
PARAM name = check_for_stack_overflow, type = int, default = 2, desc = "Set to 1 to include basic run time task stack checking. Set to 2 to include more comprehensive run time task stack checking.";
END CATEGORY
BEGIN CATEGORY software_timers
PARAM name = software_timers, type = bool, default = true, desc = "Options relating to the software timers functionality", permit = user;
PARAM name = use_timers, type = bool, default = true, desc = "Set to true to include software timer functionality, or false to exclude software timer functionality";
PARAM name = timer_task_priority, type = string, default = "(configMAX_PRIORITIES - 1)", desc = "The priority at which the software timer service/daemon task will execute.";
PARAM name = timer_command_queue_length, type = int, default = 10, desc = "The number of commands the timer command queue can hold at any one time.";
PARAM name = timer_task_stack_depth, type = string, default = "(configMINIMAL_STACK_SIZE), desc = "The size of the stack allocated to the timer service/daemon task.";
END CATEGORY
END OS

View File

@ -1,806 +0,0 @@
##############################################################################
#
# (c) Copyright 2011 Xilinx, Inc. All rights reserved.
#
# This file contains confidential and proprietary information of Xilinx, Inc.
# and is protected under U.S. and international copyright and other
# intellectual property laws.
#
# DISCLAIMER
# This disclaimer is not a license and does not grant any rights to the
# materials distributed herewith. Except as otherwise provided in a valid
# license issued to you by Xilinx, and to the maximum extent permitted by
# applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL
# FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,
# IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
# MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;
# and (2) Xilinx shall not be liable (whether in contract or tort, including
# negligence, or under any other theory of liability) for any loss or damage
# of any kind or nature related to, arising under or in connection with these
# materials, including for any direct, or any indirect, special, incidental,
# or consequential loss or damage (including loss of data, profits, goodwill,
# or any type of loss or damage suffered as a result of any action brought by
# a third party) even if such damage or loss was reasonably foreseeable or
# Xilinx had been advised of the possibility of the same.
#
# CRITICAL APPLICATIONS
# Xilinx products are not designed or intended to be fail-safe, or for use in
# any application requiring fail-safe performance, such as life-support or
# safety devices or systems, Class III medical devices, nuclear facilities,
# applications related to the deployment of airbags, or any other applications
# that could lead to death, personal injury, or severe property or
# environmental damage (individually and collectively, "Critical
# Applications"). Customer assumes the sole risk and liability of any use of
# Xilinx products in Critical Applications, subject only to applicable laws
# and regulations governing limitations on product liability.
#
# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE
# AT ALL TIMES.
#
# This file is part of FreeRTOS.
#
# $Id: freertos_v2_1_0.tcl,v 1.1.2.8 2010/12/10 07:27:08 svemula Exp $
###############################################################################
# standalone bsp version. set this to the latest "ACTIVE" version.
set standalone_version standalone_v3_01_a
proc kernel_drc {os_handle} {
set sw_proc_handle [xget_libgen_proc_handle]
set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"]
set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"]
set compiler [xget_value $sw_proc_handle "PARAMETER" "COMPILER"]
# check for valid compiler
if { [string first "mb-gcc" $compiler] == 0 && [string first "mb-g++" $compiler] == 0} {
error "Wrong compiler requested. FreeRTOS can be compiled only with the GNU compiler for MicroBlaze." "" "mdt_error"
}
# check for valid stdio parameters
set stdin [xget_value $os_handle "PARAMETER" "STDIN"]
set stdout [xget_value $os_handle "PARAMETER" "STDOUT"]
if { $stdin == "none" || $stdout == "none" } {
error "The STDIN/STDOUT parameters are not set. FreeRTOS requires stdin/stdout to be set." "" "mdt_error"
}
# check if the design has a intc
set intr_port [xget_value $hw_proc_handle "PORT" "Interrupt"]
if { [llength $intr_port] == 0 } {
error "CPU has no connection to Interrupt controller." "" "mdt_error"
}
# support only AXI/PLB
set interconnect [xget_value $hw_proc_handle "PARAMETER" "C_INTERCONNECT"]
if { $interconnect == 1 } {
set bus_name [xget_hw_busif_value $hw_proc_handle "DPLB"]
} elseif { $interconnect == 2 } {
set bus_name [xget_hw_busif_value $hw_proc_handle "M_AXI_DP"]
} else {
error "FreeRTOS supports Microblaze with only a AXI or PLB interconnect" "" "mdt_error"
}
# obtain handles to all the peripherals in the design
set mhs_handle [xget_hw_parent_handle $hw_proc_handle]
set slave_ifs [xget_hw_connected_busifs_handle $mhs_handle $bus_name "slave"]
set timer_count 0
set timer_has_intr 0
# check for a valid timer
foreach if $slave_ifs {
set ip_handle [xget_hw_parent_handle $if]
if {$ip_handle != $hw_proc_handle} {
set type [xget_hw_value $ip_handle]
if { $type == "xps_timer" || $type == "axi_timer" } {
incr timer_count
# check if the timer interrupts are enabled
set intr_port [xget_value $ip_handle "PORT" "Interrupt"]
if { [llength $intr_port] != 0 } {
set timer_has_intr 1
}
}
}
}
if { $timer_count == 0 } {
error "FreeRTOS for Microblaze requires an axi_timer or xps_timer. The HW platform doesn't have a valid timer." "" "mdt_error"
}
if { $timer_has_intr == 0 } {
error "FreeRTOS for Microblaze requires interrupts enabled for a timer." "" "mdt_error"
}
set systmr_interval_ms [xget_value $os_handle "PARAMETER" "systmr_interval"]
if { $systmr_interval_ms <= 0 } {
error "Invalid value for parameter systmr_interval specified. Please specify a positive value." "" "mdt_error"
}
### ToDo: Add DRC specific to FreeRTOS
}
proc generate {os_handle} {
variable standalone_version
set sw_proc_handle [xget_libgen_proc_handle]
set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"]
set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"]
set procver [xget_value $hw_proc_handle "PARAMETER" "HW_VER"]
set need_config_file "false"
# proctype should be "microblaze"
set mbsrcdir "../${standalone_version}/src/microblaze"
set commondir "../${standalone_version}/src/common"
set datadir "../${standalone_version}/data"
foreach entry [glob -nocomplain [file join $commondir *]] {
file copy -force $entry [file join ".." "${standalone_version}" "src"]
}
# proctype should be "microblaze"
switch -regexp $proctype {
"microblaze" {
foreach entry [glob -nocomplain [file join $mbsrcdir *]] {
if { [string first "microblaze_interrupt_handler" $entry] == -1 } { ;# Do not copy over the Standalone BSP exception handler
file copy -force $entry [file join ".." "${standalone_version}" "src"]
}
}
set need_config_file "true"
}
"default" {puts "unknown processor type $proctype\n"}
}
# Write the config.make file
set makeconfig [open "../standalone_v3_01_a/src/config.make" w]
xprint_generated_header_tcl $makeconfig "Configuration parameters for Standalone Makefile"
if { $proctype == "microblaze" } {
if { [mb_has_exceptions $hw_proc_handle] } {
puts $makeconfig "LIBSOURCES = *.s *.c *.S"
} else {
puts $makeconfig "LIBSOURCES = *.s *.c"
}
}
puts $makeconfig "LIBS = standalone_libs"
close $makeconfig
# Remove microblaze directories...
file delete -force $mbsrcdir
# copy required files to the main src directory
file copy -force [file join src Source tasks.c] src
file copy -force [file join src Source queue.c] src
file copy -force [file join src Source list.c] src
file copy -force [file join src Source timers.c] src
file copy -force [file join src Source portable MemMang heap_3.c] src
file copy -force [file join src Source portable GCC MicroBlazeV8 port.c] src
file copy -force [file join src Source portable GCC MicroBlazeV8 port_exceptions.c] src
file copy -force [file join src Source portable GCC MicroBlazeV8 portasm.S] src
file copy -force [file join src Source portable GCC MicroBlazeV8 portmacro.h] src
set headers [glob -join ./src/Source/include *.\[h\]]
foreach header $headers {
file copy -force $header src
}
file delete -force [file join src Source]
file delete -force [file join src Source]
# Handle stdin and stdout
xhandle_stdin $os_handle
xhandle_stdout $os_handle
# Create config file for microblaze interrupt handling
if {[string compare -nocase $need_config_file "true"] == 0} {
xhandle_mb_interrupts
}
# Create config files for Microblaze exception handling
if { $proctype == "microblaze" && [mb_has_exceptions $hw_proc_handle] } {
xcreate_mb_exc_config_file
}
# Create bspconfig file
set bspcfg_fn [file join ".." "${standalone_version}" "src" "bspconfig.h"]
file delete $bspcfg_fn
set bspcfg_fh [open $bspcfg_fn w]
xprint_generated_header $bspcfg_fh "Configurations for Standalone BSP"
if { $proctype == "microblaze" && [mb_has_pvr $hw_proc_handle] } {
set pvr [xget_value $hw_proc_handle "PARAMETER" "C_PVR"]
switch $pvr {
"0" {
puts $bspcfg_fh "#define MICROBLAZE_PVR_NONE"
}
"1" {
puts $bspcfg_fh "#define MICROBLAZE_PVR_BASIC"
}
"2" {
puts $bspcfg_fh "#define MICROBLAZE_PVR_FULL"
}
"default" {
puts $bspcfg_fh "#define MICROBLAZE_PVR_NONE"
}
}
}
close $bspcfg_fh
# ToDO: FreeRTOS does not handle the following, refer xilkernel TCL script
# - MPU settings
set config_file [xopen_new_include_file "./src/FreeRTOSConfig.h" "FreeRTOS Configuration parameters"]
puts $config_file "\#include \"xparameters.h\" \n"
set val [xget_value $os_handle "PARAMETER" "use_preemption"]
if {$val == "false"} {
xput_define $config_file "configUSE_PREEMPTION" "0"
} else {
xput_define $config_file "configUSE_PREEMPTION" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_mutexes"]
if {$val == "false"} {
xput_define $config_file "configUSE_MUTEXES" "0"
} else {
xput_define $config_file "configUSE_MUTEXES" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_recursive_mutexes"]
if {$val == "false"} {
xput_define $config_file "configUSE_RECURSIVE_MUTEXES" "0"
} else {
xput_define $config_file "configUSE_RECURSIVE_MUTEXES" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_counting_semaphores"]
if {$val == "false"} {
xput_define $config_file "configUSE_COUNTING_SEMAPHORES" "0"
} else {
xput_define $config_file "configUSE_COUNTING_SEMAPHORES" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_timers"]
if {$val == "false"} {
xput_define $config_file "configUSE_TIMERS" "0"
} else {
xput_define $config_file "configUSE_TIMERS" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_idle_hook"]
if {$val == "false"} {
xput_define $config_file "configUSE_IDLE_HOOK" "0"
} else {
xput_define $config_file "configUSE_IDLE_HOOK" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_tick_hook"]
if {$val == "false"} {
xput_define $config_file "configUSE_TICK_HOOK" "0"
} else {
xput_define $config_file "configUSE_TICK_HOOK" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_malloc_failed_hook"]
if {$val == "false"} {
xput_define $config_file "configUSE_MALLOC_FAILED_HOOK" "0"
} else {
xput_define $config_file "configUSE_MALLOC_FAILED_HOOK" "1"
}
set val [xget_value $os_handle "PARAMETER" "use_trace_facility"]
if {$val == "false"} {
xput_define $config_file "configUSE_TRACE_FACILITY" "0"
} else {
xput_define $config_file "configUSE_TRACE_FACILITY" "1"
}
xput_define $config_file "configUSE_16_BIT_TICKS" "0"
xput_define $config_file "configUSE_APPLICATION_TASK_TAG" "0"
xput_define $config_file "configUSE_CO_ROUTINES" "0"
# System timer tick rate (Microblaze only. kernel DRC ensures this)
set systmr_interval [xget_value $os_handle "PARAMETER" "systmr_interval"]
xput_define $config_file "configTICK_RATE_HZ" $systmr_interval
set max_priorities [xget_value $os_handle "PARAMETER" "max_priorities"]
xput_define $config_file "configMAX_PRIORITIES" $max_priorities
xput_define $config_file "configMAX_CO_ROUTINE_PRIORITIES" "2"
set min_stack [xget_value $os_handle "PARAMETER" "minimal_stack_size"]
set min_stack [expr [expr $min_stack + 3] & 0xFFFFFFFC]
xput_define $config_file "configMINIMAL_STACK_SIZE" $min_stack
set total_heap_size [xget_value $os_handle "PARAMETER" "total_heap_size"]
set total_heap_size [expr [expr $total_heap_size + 3] & 0xFFFFFFFC]
xput_define $config_file "configTOTAL_HEAP_SIZE" $total_heap_size
set max_task_name_len [xget_value $os_handle "PARAMETER" "max_task_name_len"]
xput_define $config_file "configMAX_TASK_NAME_LEN" $max_task_name_len
set val [xget_value $os_handle "PARAMETER" "idle_yield"]
if {$val == "false"} {
xput_define $config_file "configIDLE_SHOULD_YIELD" "0"
} else {
xput_define $config_file "configIDLE_SHOULD_YIELD" "1"
}
set val [xget_value $os_handle "PARAMETER" "check_for_stack_overflow"]
if {$val == "false"} {
xput_define $config_file "configCHECK_FOR_STACK_OVERFLOW" "0"
} else {
xput_define $config_file "configCHECK_FOR_STACK_OVERFLOW" "2"
}
set val [xget_value $os_handle "PARAMETER" "queue_registry_size"]
if {$val == "false"} {
xput_define $config_file "configQUEUE_REGISTRY_SIZE" "0"
} else {
xput_define $config_file "configQUEUE_REGISTRY_SIZE" "10"
}
xput_define $config_file "configGENERATE_RUN_TIME_STATS" "0"
set val [xget_value $os_handle "PARAMETER" "timer_task_priority"]
if {$val == "false"} {
xput_define $config_file "configTIMER_TASK_PRIORITY" "0"
} else {
xput_define $config_file "configTIMER_TASK_PRIORITY" "10"
}
set val [xget_value $os_handle "PARAMETER" "timer_command_queue_length"]
if {$val == "false"} {
xput_define $config_file "configTIMER_QUEUE_LENGTH" "0"
} else {
xput_define $config_file "configTIMER_QUEUE_LENGTH" "10"
}
set val [xget_value $os_handle "PARAMETER" "timer_task_stack_depth"]
if {$val == "false"} {
xput_define $config_file "configTIMER_TASK_STACK_DEPTH" "0"
} else {
xput_define $config_file "configTIMER_TASK_STACK_DEPTH" $min_stack
}
if { [mb_has_exceptions $hw_proc_handle] } {
xput_define $config_file "configINSTALL_EXCEPTION_HANDLERS" "1"
} else {
xput_define $config_file "configINSTALL_EXCEPTION_HANDLERS" "0"
}
xput_define $config_file "configINTERRUPT_CONTROLLER_TO_USE" "XPAR_INTC_SINGLE_DEVICE_ID"
xput_define $config_file "INCLUDE_vTaskCleanUpResources" "0"
xput_define $config_file "INCLUDE_vTaskDelay" "1"
xput_define $config_file "INCLUDE_vTaskDelayUntil" "1"
xput_define $config_file "INCLUDE_vTaskDelete" "1"
xput_define $config_file "INCLUDE_xTaskGetCurrentTaskHandle" "1"
xput_define $config_file "INCLUDE_xTaskGetIdleTaskHandle" "1"
xput_define $config_file "INCLUDE_xTaskGetSchedulerState" "1"
xput_define $config_file "INCLUDE_xTimerGetTimerTaskHandle" "1"
xput_define $config_file "INCLUDE_uxTaskGetStackHighWaterMark" "1"
xput_define $config_file "INCLUDE_uxTaskPriorityGet" "1"
xput_define $config_file "INCLUDE_vTaskPrioritySet" "1"
xput_define $config_file "INCLUDE_xTaskResumeFromISR" "1"
xput_define $config_file "INCLUDE_vTaskSuspend" "1"
xput_define $config_file "INCLUDE_pcTaskNameGet" "1"
xput_define $config_file "INCLUDE_xTaskIdleTaskHandleGet" "1"
xput_define $config_file "INCLUDE_xTimerDaemonTaskHandleGet" "1"
# complete the header protectors
puts $config_file "\#endif"
close $config_file
}
proc xopen_new_include_file { filename description } {
set inc_file [open $filename w]
xprint_generated_header $inc_file $description
set newfname [string map {. _} [lindex [split $filename {\/}] end]]
puts $inc_file "\#ifndef _[string toupper $newfname]"
puts $inc_file "\#define _[string toupper $newfname]\n\n"
return $inc_file
}
proc xadd_define { config_file os_handle parameter } {
set param_value [xget_value $os_handle "PARAMETER" $parameter]
puts $config_file "#define [string toupper $parameter] $param_value\n"
# puts "creating #define [string toupper $parameter] $param_value\n"
}
proc xput_define { config_file parameter param_value } {
puts $config_file "#define $parameter $param_value\n"
# puts "creating #define [string toupper $parameter] $param_value\n"
}
# args field of the array
proc xadd_extern_fname {initfile oshandle arrayname arg} {
set arrhandle [xget_handle $oshandle "ARRAY" $arrayname]
set elements [xget_handle $arrhandle "ELEMENTS" "*"]
set count 0
set max_count [llength $elements]
foreach ele $elements {
incr count
set arg_value [xget_value $ele "PARAMETER" $arg]
puts $initfile "extern void $arg_value\(\)\;"
}
puts $initfile ""
}
# args is variable no - fields of the array
proc xadd_struct {initfile oshandle structtype structname arrayname args} {
set arrhandle [xget_handle $oshandle "ARRAY" $arrayname]
set elements [xget_handle $arrhandle "ELEMENTS" "*"]
set count 0
set max_count [llength $elements]
puts $initfile "struct $structtype $structname\[$max_count\] = \{"
foreach ele $elements {
incr count
puts -nonewline $initfile "\t\{"
foreach field $args {
set field_value [xget_value $ele "PARAMETER" $field]
# puts "$arrayname ( $count )->$field is $field_value"
puts -nonewline $initfile "$field_value"
if { $field != [lindex $args end] } {
puts -nonewline $initfile ","
}
}
if {$count < $max_count} {
puts $initfile "\},"
} else {
puts $initfile "\}"
}
}
puts $initfile "\}\;"
}
# return the sum of all the arg field values in arrayname
proc get_field_sum {oshandle arrayname arg} {
set arrhandle [xget_handle $oshandle "ARRAY" $arrayname]
set elements [xget_handle $arrhandle "ELEMENTS" "*"]
set count 0
set max_count [llength $elements]
foreach ele $elements {
set field_value [xget_value $ele "PARAMETER" $arg]
set count [expr $field_value+$count]
}
return $count
}
# return the sum of the product of field values in arrayname
proc get_field_product_sum {oshandle arrayname field1 field2} {
set arrhandle [xget_handle $oshandle "ARRAY" $arrayname]
set elements [xget_handle $arrhandle "ELEMENTS" "*"]
set count 0
set max_count [llength $elements]
foreach ele $elements {
set field1_value [xget_value $ele "PARAMETER" $field1]
set field2_value [xget_value $ele "PARAMETER" $field2]
set incr_value [expr $field1_value*$field2_value]
set count [expr $count+$incr_value]
}
return $count
}
proc xhandle_mb_interrupts {} {
set default_interrupt_handler "XNullHandler"
set default_arg "XNULL"
set source_interrupt_handler $default_interrupt_handler
set source_handler_arg $default_arg
# Handle the interrupt pin
set sw_proc_handle [xget_libgen_proc_handle]
set periph [xget_handle $sw_proc_handle "IPINST"]
set source_ports [xget_interrupt_sources $periph]
if {[llength $source_ports] > 1} {
error "Too many interrupting ports on the MicroBlaze. Should only find 1" "" "libgen_error"
return
}
if {[llength $source_ports] == 1} {
set source_port [lindex $source_ports 0]
if {[llength $source_port] != 0} {
set source_port_name [xget_value $source_port "VALUE"]
set source_periph [xget_handle $source_port "PARENT"]
set source_name [xget_value $source_periph "NAME"]
set source_driver [xget_sw_driver_handle_for_ipinst $sw_proc_handle $source_name]
if {[string compare -nocase $source_driver ""] != 0} {
set int_array [xget_handle $source_driver "ARRAY" "interrupt_handler"]
if {[llength $int_array] != 0} {
set int_array_elems [xget_handle $int_array "ELEMENTS" "*"]
if {[llength $int_array_elems] != 0} {
foreach int_array_elem $int_array_elems {
set int_port [xget_value $int_array_elem "PARAMETER" "int_port"]
if {[llength $int_port] != 0} {
if {[string compare -nocase $int_port $source_port_name] == 0 } {
set source_interrupt_handler [xget_value $int_array_elem "PARAMETER" "int_handler"]
set source_handler_arg [xget_value $int_array_elem "PARAMETER" "int_handler_arg"]
if {[string compare -nocase $source_handler_arg DEVICE_ID] == 0 } {
set source_handler_arg [xget_name $source_periph "DEVICE_ID"]
} else {
if {[string compare -nocase "global" [xget_port_type $source_port]] == 0} {
set source_handler_arg $default_arg
} else {
set source_handler_arg [xget_name $source_periph "C_BASEADDR"]
}
}
break
}
}
}
}
}
}
}
}
# Generate microblaze_interrupts_g.c file...
xcreate_mb_intr_config_file $source_interrupt_handler $source_handler_arg
}
proc xcreate_mb_intr_config_file {handler arg} {
set mb_table "MB_InterruptVectorTable"
set filename [file join "../standalone_v3_01_a/src" "microblaze_interrupts_g.c"]
file delete $filename
set config_file [open $filename w]
xprint_generated_header $config_file "Interrupt Handler Table for MicroBlaze Processor"
puts $config_file "#include \"microblaze_interrupts_i.h\""
puts $config_file "#include \"xparameters.h\""
puts $config_file "\n"
puts $config_file [format "extern void %s (void *);" $handler]
puts $config_file "\n/*"
puts $config_file "* The interrupt handler table for microblaze processor"
puts $config_file "*/\n"
puts $config_file [format "%sEntry %s\[\] =" $mb_table $mb_table]
puts $config_file "\{"
puts -nonewline $config_file [format "\{\t%s" $handler]
puts -nonewline $config_file [format ",\n\t(void*) %s\}" $arg]
puts -nonewline $config_file "\n\};"
puts $config_file "\n"
close $config_file
}
# -------------------------------------------
# Tcl procedure xcreate_mb_exc_config file
# -------------------------------------------
proc xcreate_mb_exc_config_file { } {
set hfilename [file join "src" "microblaze_exceptions_g.h"]
file delete $hfilename
set hconfig_file [open $hfilename w]
xprint_generated_header $hconfig_file "Exception Handling Header for MicroBlaze Processor"
puts $hconfig_file "\n"
set sw_proc_handle [xget_libgen_proc_handle]
set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"]
set procver [xget_value $hw_proc_handle "PARAMETER" "HW_VER"]
if { ![mb_has_exceptions $hw_proc_handle]} { ;# NO exceptions are enabled
close $hconfig_file ;# Do not generate any info in either the header or the C file
return
}
puts $hconfig_file "\#define MICROBLAZE_EXCEPTIONS_ENABLED 1"
if { [mb_can_handle_exceptions_in_delay_slots $procver] } {
puts $hconfig_file "#define MICROBLAZE_CAN_HANDLE_EXCEPTIONS_IN_DELAY_SLOTS"
}
close $hconfig_file
}
# --------------------------------------
# Tcl procedure post_generate
# This proc removes from libxil.a the basic
# and standalone BSP versions of
# _interrupt_handler and _hw_exception_handler
# routines
# --------------------------------------
proc post_generate {os_handle} {
set sw_proc_handle [xget_libgen_proc_handle]
set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"]
set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"]
set procname [xget_value $hw_proc_handle "NAME"]
set procdrv [xget_sw_driver_handle_for_ipinst $sw_proc_handle $procname]
set archiver [xget_value $procdrv "PARAMETER" "archiver"]
if {[string compare -nocase $proctype "microblaze"] == 0 } {
# Remove _interrupt_handler.o from libxil.a for FreeRTOS
set libxil_a [file join .. .. lib libxil.a]
exec $archiver -d $libxil_a _interrupt_handler.o
# We have linkage problems due to how these platforms are defined. Can't do this right now.
# # Remove _exception_handler.o from libxil.a for FreeRTOS
# exec bash -c "$archiver -d ../../lib/libxil.a _exception_handler.o"
# Remove _hw_exception_handler.o from libxil.a for microblaze cores with exception support
if {[mb_has_exceptions $hw_proc_handle]} {
exec $archiver -d ../../lib/libxil.a _hw_exception_handler.o
}
}
}
# --------------------------------------
# Tcl procedure execs_generate
# This proc removes from libxil.a all
# the stuff that we are overriding
# with xilkernel
# We currently override,
# MicroBlaze
# - Dummy _interrupt_hander and _hw_exception_handler
# (in post_generate)
# PPC
# - xvectors.o; sleep.o (IF config_time is true)
# Common to all processors
# - errno.o
# --------------------------------------
proc execs_generate {os_handle} {
set sw_proc_handle [xget_libgen_proc_handle]
set hw_proc_handle [xget_handle $sw_proc_handle "IPINST"]
set proctype [xget_value $hw_proc_handle "OPTION" "IPNAME"]
set procname [xget_value $hw_proc_handle "NAME"]
set procdrv [xget_sw_driver_handle_for_ipinst $sw_proc_handle $procname]
# Remove _interrupt_handler.o from libxil.a for mb-gcc
set archiver [xget_value $procdrv "PARAMETER" "archiver"]
set libxil_a [file join .. .. lib libxil.a]
# exec $archiver -d $libxil_a errno.o
# We have linkage problems due to how these platforms are defined. Can't do this right now.
# exec "$archiver -d $libxil_a microblaze_interrupt_handler.o"
}
# --------------------------------------
# Return true if this MB has
# exception handling support
# --------------------------------------
proc mb_has_exceptions { hw_proc_handle } {
# Check if the following parameters exist on this MicroBlaze's MPD
set ee [xget_value $hw_proc_handle "PARAMETER" "C_UNALIGNED_EXCEPTIONS"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_ILL_OPCODE_EXCEPTION"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_IOPB_BUS_EXCEPTION"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_DOPB_BUS_EXCEPTION"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_DIV_BY_ZERO_EXCEPTION"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_DIV_ZERO_EXCEPTION"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_FPU_EXCEPTION"]
if { $ee != "" } {
return true
}
set ee [xget_value $hw_proc_handle "PARAMETER" "C_USE_MMU"]
if { $ee != "" && $ee != 0 } {
return true
}
return false
}
# --------------------------------------
# Return true if this MB has
# FPU exception handling support
# --------------------------------------
proc mb_has_fpu_exceptions { hw_proc_handle } {
# Check if the following parameters exist on this MicroBlaze's MPD
set ee [xget_value $hw_proc_handle "PARAMETER" "C_FPU_EXCEPTION"]
if { $ee != "" } {
return true
}
return false
}
# --------------------------------------
# Return true if this MB has PVR support
# --------------------------------------
proc mb_has_pvr { hw_proc_handle } {
# Check if the following parameters exist on this MicroBlaze's MPD
set pvr [xget_value $hw_proc_handle "PARAMETER" "C_PVR"]
if { $pvr != "" } {
return true
}
return false
}
# --------------------------------------
# Return true if MB ver 'procver' has
# support for handling exceptions in
# delay slots
# --------------------------------------
proc mb_can_handle_exceptions_in_delay_slots { procver } {
if { [string compare -nocase $procver "5.00.a"] >= 0 } {
return true
} else {
return false
}
}
# --------------------------------------------------------------------------
# Gets all the handles that are memory controller cores.
# --------------------------------------------------------------------------
proc xget_memory_controller_handles { mhs } {
set ret_list ""
# Gets all MhsInsts in the system
set mhsinsts [xget_hw_ipinst_handle $mhs "*"]
# Loop thru each MhsInst and determine if have "ADDR_TYPE = MEMORY" in
# the parameters.
foreach mhsinst $mhsinsts {
# Gets all parameters of the component
set params [xget_hw_parameter_handle $mhsinst "*"]
# Loop thru each param and find tag "ADDR_TYPE = MEMORY"
foreach param $params {
if {$param == 0} {
continue
} elseif {$param == ""} {
continue
}
set addrTypeValue [ xget_hw_subproperty_value $param "ADDR_TYPE" ]
# Found tag! Add MhsInst to list and break to go to next MhsInst
if {[string compare -nocase $addrTypeValue "MEMORY"] == 0} {
lappend ret_list $mhsinst
break
}
}
}
return $ret_list
}

View File

@ -1,4 +0,0 @@
The necessary files are copied to this BSP directory structure by executing
the CreateProjectDirectoryStructure.bat batch file located in the
FreeRTOS\\Demo\MicroBlaze_Spartan-6_EthernetLite\SDKProjects\RTOSDemoSource
folder.

View File

@ -1,435 +0,0 @@
The FreeRTOS.org source code is licensed by the modified GNU General Public
License (GPL) text provided below. The FreeRTOS download also includes
demo application source code, some of which is provided by third parties
AND IS LICENSED SEPARATELY FROM FREERTOS.ORG.
For the avoidance of any doubt refer to the comment included at the top
of each source and header file for license and copyright information.
This is a list of files for which Real Time Engineers Ltd are not the
copyright owner and are NOT COVERED BY THE GPL.
1) Various header files provided by silicon manufacturers and tool vendors
that define processor specific memory addresses and utility macros.
Permission has been granted by the various copyright holders for these
files to be included in the FreeRTOS download. Users must ensure license
conditions are adhered to for any use other than compilation of the
FreeRTOS demo applications.
2) The uIP TCP/IP stack the copyright of which is held by Adam Dunkels.
Users must ensure the open source license conditions stated at the top
of each uIP source file is understood and adhered to.
3) The lwIP TCP/IP stack the copyright of which is held by the Swedish
Institute of Computer Science. Users must ensure the open source license
conditions stated at the top of each lwIP source file is understood and
adhered to.
4) Various peripheral driver source files and binaries provided by silicon
manufacturers and tool vendors. Permission has been granted by the
various copyright holders for these files to be included in the FreeRTOS
download. Users must ensure license conditions are adhered to for any
use other than compilation of the FreeRTOS demo applications.
5) The files contained within FreeRTOS\Demo\WizNET_DEMO_TERN_186\tern_code,
which are slightly modified versions of code provided by and copyright to
Tern Inc.
Errors and omissions should be reported to Richard Barry, contact details for
whom can be obtained from http://www.FreeRTOS.org.
The GPL license text follows.
A special exception to the GPL is included to allow you to distribute a
combined work that includes FreeRTOS without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details. The exception text is also
included at the bottom of this file.
--------------------------------------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program 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.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
----------------------------------------------------------------------------
The FreeRTOS GPL Exception Text:
Any FreeRTOS source code, whether modified or in it's original release form,
or whether in whole or in part, can only be distributed by you under the terms
of the GNU General Public License plus this exception. An independent module is
a module which is not derived from or based on FreeRTOS.
Clause 1:
Linking FreeRTOS statically or dynamically with other modules is making a
combined work based on FreeRTOS. Thus, the terms and conditions of the GNU
General Public License cover the whole combination.
As a special exception, the copyright holder of FreeRTOS gives you permission
to link FreeRTOS with independent modules that communicate with FreeRTOS
solely through the FreeRTOS API interface, regardless of the license terms of
these independent modules, and to copy and distribute the resulting combined
work under terms of your choice, provided that
+ Every copy of the combined work is accompanied by a written statement that
details to the recipient the version of FreeRTOS used and an offer by yourself
to provide the FreeRTOS source code (including any modifications you may have
made) should the recipient request it.
+ The combined work is not itself an RTOS, scheduler, kernel or related product.
+ The independent modules add significant and primary functionality to FreeRTOS
and do not merely extend the existing functionality already present in FreeRTOS.
Clause 2:
FreeRTOS may not be used for any competitive or comparative purpose, including the
publication of any form of run time or compile time metric, without the express
permission of Real Time Engineers Ltd. (this is the norm within the industry and
is intended to ensure information accuracy).

View File

@ -1,77 +0,0 @@
##############################################################################
#
# Copyright (c) 2010 Xilinx, Inc. All rights reserved.
#
# Xilinx, Inc.
# XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
# COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
# ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR
# STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION
# IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE
# FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
# XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
# THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO
# ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
# FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE.
#
# Top level Makefile
#
# $Id: $
#
##############################################################################
#
# Processor architecture
# microblaze
#
ARCH = microblaze
SYSTEMDIR = ../../..
TOPDIR = .
ARCH_PREFIX = mb
#
# gnu tools for Makefile
#
CC = $(ARCH_PREFIX)-gcc
AR = $(ARCH_PREFIX)-ar
CP = cp
#
# Compiler, linker and other options.
#
CFLAGS = ${COMPILER_FLAGS} ${EXTRA_COMPILER_FLAGS}
#
# System project directories.
#
LIBDIR = $(SYSTEMDIR)/lib
INCLUDEDIR = $(SYSTEMDIR)/include
# Kernel library.
LIBFREERTOS = ${LIBDIR}/libfreertos.a
INCLUDEFILES = ${TOPDIR}/*.h
INCLUDES = -I$(INCLUDEDIR) \
-I${TOPDIR}
KERNEL_AR_OBJS = *.c *.S
OUTS = *.o
libs: $(KERNEL_AR_OBJS)
@echo "Compiling FreeRTOS"
@$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $^
@$(ARCHIVER) -r ${LIBFREERTOS} ${OUTS}
make clean
.PHONY: include
include:
${CP} ${INCLUDEFILES} ${INCLUDEDIR}
clean:
rm -rf ${OUTS}

View File

@ -1,19 +0,0 @@
Each real time kernel port consists of three files that contain the core kernel
components and are common to every port, and one or more files that are
specific to a particular microcontroller and/or compiler.
+ The FreeRTOS/Source/Portable/MemMang directory contains the three sample
memory allocators as described on the http://www.FreeRTOS.org WEB site.
+ The other directories each contain files specific to a particular
microcontroller or compiler.
For example, if you are interested in the GCC port for the ATMega323
microcontroller then the port specific files are contained in
FreeRTOS/Source/Portable/GCC/ATMega323 directory. If this is the only
port you are interested in then all the other directories can be
ignored.

View File

@ -1,17 +0,0 @@
Each real time kernel port consists of three files that contain the core kernel
components and are common to every port, and one or more files that are
specific to a particular microcontroller and or compiler.
+ The FreeRTOS/Source directory contains the three files that are common to
every port - list.c, queue.c and tasks.c. The kernel is contained within these
three files. croutine.c implements the optional co-routine functionality - which
is normally only used on very memory limited systems.
+ The FreeRTOS/Source/Portable directory contains the files that are specific to
a particular microcontroller and or compiler.
+ The FreeRTOS/Source/include directory contains the real time kernel header
files.
See the readme file in the FreeRTOS/Source/Portable directory for more
information.

View File

@ -1,19 +0,0 @@
The download includes the kernel source code, and a demo application for EVERY
RTOS port. See http://www.freertos.org/a00017.html for full details of the
directory structure and information on locating the files you require.
The easiest way to use FreeRTOS is start start with one of the demo application
projects. Once this is running the project can be modified to include your own
source files. This way the correct files and compiler options will be
automatically included in your application.
+ The Source directory contains the real time kernel source files for every
port. The kernel itself is only 3 files.
+ The Demo directory contains the demo application source files for every
port.
+ The TraceCon directory contains the trace visualisation exe file.
See the readme files in the respective directories for further information.

View File

@ -1,9 +0,0 @@
PARAMETER VERSION = 2.2.0
BEGIN OS
PARAMETER OS_NAME = freertos
PARAMETER STDIN = *
PARAMETER STDOUT = *
END

View File

@ -1,127 +0,0 @@
proc swapp_get_name {} {
return "FreeRTOS Hello World";
}
proc swapp_get_description {} {
return "Let's say 'Hello World' in FreeRTOS.";
}
proc get_os {} {
set oslist [xget_sw_modules "type" "os"];
set os [lindex $oslist 0];
if { $os == "" } {
error "No Operating System specified in the Board Support Package.";
}
return $os;
}
proc get_stdout {} {
set os [get_os];
set stdout [xget_sw_module_parameter $os "STDOUT"];
return $stdout;
}
proc check_stdout_hw {} {
set uartlites [xget_ips "type" "uartlite"];
set uart16550s [xget_ips "type" "uart16550"];
if { ([llength $uartlites] == 0) && ([llength $uart16550s] == 0) } {
# Check for MDM-Uart peripheral. The MDM would be listed as a peripheral
# only if it has a UART interface. So no further check is required
set mdmlist [xget_ips "type" "mdm"]
if { [llength $mdmlist] == 0 } {
error "This application requires a Uart IP in the hardware."
}
}
}
proc check_stdout_sw {} {
set stdout [get_stdout];
if { $stdout == "none" } {
error "The STDOUT parameter is not set on the OS. Hello World requires stdout to be set."
}
}
proc get_mem_size { memlist } {
return [lindex $memlist 4];
}
proc require_memory {memsize} {
set imemlist [xget_memory_ranges "access_type" "I"];
set idmemlist [xget_memory_ranges "access_type" "ID"];
set dmemlist [xget_memory_ranges "access_type" "D"];
set memlist [concat $imemlist $idmemlist $dmemlist];
while { [llength $memlist] > 3 } {
set mem [lrange $memlist 0 4];
set memlist [lreplace $memlist 0 4];
if { [get_mem_size $mem] >= $memsize } {
return 1;
}
}
error "This application requires atleast $memsize bytes of memory.";
}
proc swapp_is_supported_hw {} {
# check for uart peripheral
check_stdout_hw;
# require about 1M of memory
require_memory "1000000";
return 1;
}
proc swapp_is_supported_sw {} {
# check for stdout being set
check_stdout_sw;
return 1;
}
proc generate_stdout_config { fid } {
set stdout [get_stdout];
# if stdout is uartlite, we don't have to generate anything
set stdout_type [xget_ip_attribute "type" $stdout];
if { [regexp -nocase "uartlite" $stdout_type] || [string match -nocase "mdm" $stdout_type] } {
return;
} elseif { [regexp -nocase "uart16550" $stdout_type] } {
# mention that we have a 16550
puts $fid "#define STDOUT_IS_16550";
# and note down its base address
set prefix "XPAR_";
set postfix "_BASEADDR";
set stdout_baseaddr_macro $prefix$stdout$postfix;
set stdout_baseaddr_macro [string toupper $stdout_baseaddr_macro];
puts $fid "#define STDOUT_BASEADDR $stdout_baseaddr_macro";
}
}
# depending on the type of os (standalone|xilkernel), choose
# the correct source files
proc swapp_generate {} {
# cleanup this file for writing
set fid [open "platform_config.h" "w+"];
puts $fid "#ifndef __PLATFORM_CONFIG_H_";
puts $fid "#define __PLATFORM_CONFIG_H_\n";
# if we have a uart16550 as stdout, then generate some config for that
generate_stdout_config $fid;
puts $fid "#endif";
close $fid;
}
proc swapp_get_linker_constraints {} {
# we need a 4k heap
return "stack 40k heap 40k";
}

View File

@ -1,398 +0,0 @@
/*
FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
See http://www.FreeRTOS.org for full information on FreeRTOS, including
an API reference, pdf API reference manuals, and FreeRTOS tutorial books.
See http://www.freertos.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html
for comprehensive standalone FreeRTOS for MicroBlaze demos.
***************************************************************************
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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.
*/
/*
* FreeRTOS-main.c (this file) defines a very simple demo that creates two tasks,
* one queue, and one timer.
*
* The main() Function:
* main() creates one software timer, one queue, and two tasks. It then starts
* the scheduler.
*
* The Queue Send Task:
* The queue send task is implemented by the prvQueueSendTask() function in
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
* block for 200 milliseconds, before sending the value 100 to the queue that
* was created within main(). Once the value is sent, the task loops back
* around to block for another 200 milliseconds.
*
* The Queue Receive Task:
* The queue receive task is implemented by the prvQueueReceiveTask() function
* in this file. prvQueueReceiveTask() sits in a loop that causes it to
* repeatedly attempt to read data from the queue that was created within
* main(). When data is received, the task checks the value of the data, and
* if the value equals the expected 100, increments the ulRecieved variable.
* The 'block time' parameter passed to the queue receive function specifies
* that the task should be held in the Blocked state indefinitely to wait for
* data to be available on the queue. The queue receive task will only leave
* the Blocked state when the queue send task writes to the queue. As the queue
* send task writes to the queue every 200 milliseconds, the queue receive task
* leaves the Blocked state every 200 milliseconds, and therefore toggles the LED
* every 200 milliseconds.
*
* The Software Timer:
* The software timer is configured to be an "auto reset" timer. Its callback
* function simply increments the ulCallback variable each time it executes.
*/
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "timers.h"
/* BSP includes. */
#include "xtmrctr.h"
/* Priorities at which the tasks are created. */
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* The rate at which data is sent to the queue, specified in milliseconds, and
converted to ticks using the portTICK_RATE_MS constant. */
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS )
/* The number of items the queue can hold. This is 1 as the receive task
will remove items as they are added because it has the higher priority, meaning
the send task should always find the queue empty. */
#define mainQUEUE_LENGTH ( 1 )
/* A block time of 0 simply means, "don't block". */
#define mainDONT_BLOCK ( portTickType ) 0
/* The following constants describe the timer instance used in this application.
They are defined here such that a user can easily change all the needed parameters
in one place. */
#define TIMER_DEVICE_ID XPAR_TMRCTR_0_DEVICE_ID
#define TIMER_FREQ_HZ XPAR_TMRCTR_0_CLOCK_FREQ_HZ
#define TIMER_INTR_ID XPAR_INTC_0_TMRCTR_0_VEC_ID
/*-----------------------------------------------------------*/
/*
* The tasks as described in the comments at the top of this file.
*/
static void prvQueueReceiveTask( void *pvParameters );
static void prvQueueSendTask( void *pvParameters );
/*
* The LED timer callback function. This does nothing but increment the
* ulCallback variable each time it executes.
*/
static void vSoftwareTimerCallback( xTimerHandle xTimer );
/*-----------------------------------------------------------*/
/* The queue used by the queue send and queue receive tasks. */
static xQueueHandle xQueue = NULL;
/* The LED software timer. This uses vSoftwareTimerCallback() as its callback
function. */
static xTimerHandle xExampleSoftwareTimer = NULL;
/*-----------------------------------------------------------*/
/* Structures that hold the state of the various peripherals used by this demo.
These are used by the Xilinx peripheral driver API functions. */
static XTmrCtr xTimer0Instance;
/* The variable that is incremented each time the receive task receives the
value 100. */
static unsigned long ulReceived = 0UL;
/* The variable that is incremented each time the software time callback function
executes. */
static unsigned long ulCallback = 0UL;
/*-----------------------------------------------------------*/
int main( void )
{
/***************************************************************************
See http://www.FreeRTOS.org for full information on FreeRTOS, including
an API reference, pdf API reference manuals, and FreeRTOS tutorial books.
See http://www.freertos.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html
for comprehensive standalone FreeRTOS for MicroBlaze demos.
***************************************************************************/
/* Create the queue used by the queue send and queue receive tasks as
described in the comments at the top of this file. */
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
/* Sanity check that the queue was created. */
configASSERT( xQueue );
/* Start the two tasks as described in the comments at the top of this
file. */
xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL );
xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
/* Create the software timer */
xExampleSoftwareTimer = xTimerCreate( ( const signed char * ) "SoftwareTimer", /* A text name, purely to help debugging. */
( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */
pdTRUE, /* This is an auto-reload timer, so xAutoReload is set to pdTRUE. */
( void * ) 0, /* The ID is not used, so can be set to anything. */
vSoftwareTimerCallback /* The callback function that switches the LED off. */
);
/* Start the software timer. */
xTimerStart( xExampleSoftwareTimer, mainDONT_BLOCK );
/* Start the tasks and timer running. */
vTaskStartScheduler();
/* If all is well, the scheduler will now be running, and the following line
will never be reached. If the following line does execute, then there was
insufficient FreeRTOS heap memory available for the idle and/or timer tasks
to be created. See the memory management section on the FreeRTOS web site
for more details. */
for( ;; );
}
/*-----------------------------------------------------------*/
/* The callback is executed when the software timer expires. */
static void vSoftwareTimerCallback( xTimerHandle xTimer )
{
/* Just increment the ulCallbac variable. */
ulCallback++;
}
/*-----------------------------------------------------------*/
static void prvQueueSendTask( void *pvParameters )
{
portTickType xNextWakeTime;
const unsigned long ulValueToSend = 100UL;
/* Initialise xNextWakeTime - this only needs to be done once. */
xNextWakeTime = xTaskGetTickCount();
for( ;; )
{
/* Place this task in the blocked state until it is time to run again.
The block time is specified in ticks, the constant used converts ticks
to ms. While in the Blocked state this task will not consume any CPU
time. */
vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
/* Send to the queue - causing the queue receive task to unblock and
toggle an LED. 0 is used as the block time so the sending operation
will not block - it shouldn't need to block as the queue should always
be empty at this point in the code. */
xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK );
}
}
/*-----------------------------------------------------------*/
static void prvQueueReceiveTask( void *pvParameters )
{
unsigned long ulReceivedValue;
for( ;; )
{
/* Wait until something arrives in the queue - this task will block
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
FreeRTOSConfig.h. */
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
/* To get here something must have been received from the queue, but
is it the expected value? If it is, increment the ulReceived variable. */
if( ulReceivedValue == 100UL )
{
ulReceived++;
}
}
}
/*-----------------------------------------------------------*/
void vApplicationMallocFailedHook( void )
{
/* vApplicationMallocFailedHook() will only be called if
configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
function that will get called if a call to pvPortMalloc() fails.
pvPortMalloc() is called internally by the kernel whenever a task, queue or
semaphore is created. It is also called by various parts of the demo
application. If heap_1.c or heap_2.c are used, then the size of the heap
available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in
FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used
to query the size of free heap space that remains (although it does not
provide information on how the remaining heap might be fragmented). */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
{
( void ) pcTaskName;
( void ) pxTask;
/* vApplicationStackOverflowHook() will only be called if
configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name
of the offending task will be passed into the hook function via its
parameters. However, when a stack has overflowed, it is possible that the
parameters will have been corrupted, in which case the pxCurrentTCB variable
can be inspected directly. */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationIdleHook( void )
{
/* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
task. It is essential that code added to this hook function never attempts
to block in any way (for example, call xQueueReceive() with a block time
specified, or call vTaskDelay()). If the application makes use of the
vTaskDelete() API function (as this demo application does) then it is also
important that vApplicationIdleHook() is permitted to return to its calling
function, because it is the responsibility of the idle task to clean up
memory allocated by the kernel to any task that has since been deleted. */
}
/*-----------------------------------------------------------*/
void vApplicationTickHook( void )
{
/* vApplicationTickHook() will only be called if configUSE_TICK_HOOK is set
to 1 in FreeRTOSConfig.h. It executes from an interrupt context so must
not use any FreeRTOS API functions that do not end in ...FromISR().
This simple blinky demo does not use the tick hook, but a tick hook is
required to be defined as the blinky and full demos share a
FreeRTOSConfig.h header file. */
}
/*-----------------------------------------------------------*/
/* This is an application defined callback function used to install the tick
interrupt handler. It is provided as an application callback because the kernel
will run on lots of different MicroBlaze and FPGA configurations - there could
be multiple timer instances in the hardware platform and the users can chose to
use any one of them. This example uses Timer 0. If that is available in your
hardware platform then this example callback implementation should not require
modification. The definitions for the timer instance used are at the top of this
file so that users can change them at one place based on the timer instance they
use. The name of the interrupt handler that should be installed is vPortTickISR(),
which the function below declares as an extern. */
void vApplicationSetupTimerInterrupt( void )
{
portBASE_TYPE xStatus;
const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U;
const unsigned long ulCounterValue = ( ( TIMER_FREQ_HZ / configTICK_RATE_HZ ) - 1UL );
extern void vPortTickISR( void *pvUnused );
/* Initialise the timer/counter. */
xStatus = XTmrCtr_Initialize( &xTimer0Instance, TIMER_DEVICE_ID );
if( xStatus == XST_SUCCESS )
{
/* Install the tick interrupt handler as the timer ISR.
*NOTE* The xPortInstallInterruptHandler() API function must be used for
this purpose. */
xStatus = xPortInstallInterruptHandler( TIMER_INTR_ID, vPortTickISR, NULL );
}
if( xStatus == pdPASS )
{
/* Enable the timer interrupt in the interrupt controller.
*NOTE* The vPortEnableInterrupt() API function must be used for this
purpose. */
vPortEnableInterrupt( TIMER_INTR_ID );
/* Configure the timer interrupt handler. */
XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL );
/* Set the correct period for the timer. */
XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterValue );
/* Enable the interrupts. Auto-reload mode is used to generate a
periodic tick. Note that interrupts are disabled when this function is
called, so interrupts will not start to be processed until the first
task has started to run. */
XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) );
/* Start the timer. */
XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber );
}
/* Sanity check that the function executed as expected. */
configASSERT( ( xStatus == pdPASS ) );
}
/*-----------------------------------------------------------*/
/* This is an application defined callback function used to clear whichever
interrupt was installed by the the vApplicationSetupTimerInterrupt() callback
function - in this case the interrupt generated by the AXI timer. It is
provided as an application callback because the kernel will run on lots of
different MicroBlaze and FPGA configurations - not all of which will have the
same timer peripherals defined or available. This example uses the AXI Timer 0.
If that is available on your hardware platform then this example callback
implementation should not require modification provided the example definition
of vApplicationSetupTimerInterrupt() is also not modified. */
void vApplicationClearTimerInterrupt( void )
{
unsigned long ulCSR;
/* Clear the timer interrupt */
ulCSR = XTmrCtr_GetControlStatusReg( XPAR_TMRCTR_0_BASEADDR, 0 );
XTmrCtr_SetControlStatusReg( XPAR_TMRCTR_0_BASEADDR, 0, ulCSR );
}
/*-----------------------------------------------------------*/

View File

@ -1,32 +0,0 @@
// BMM LOC annotation file.
//
// Release 13.1 - Data2MEM O.40d, build 1.9 Aug 19, 2010
// Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0', ID 100, memory map.
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_MAP microblaze_0 MICROBLAZE-LE 100
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'microblaze_0_bram_block_combined' 0x00000000:0x00001FFF (8 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE microblaze_0_bram_block_combined RAMB16 [0x00000000:0x00001FFF]
BUS_BLOCK
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_0 [31:24] INPUT = microblaze_0_bram_block_combined_0.mem PLACED = X3Y34;
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_1 [23:16] INPUT = microblaze_0_bram_block_combined_1.mem PLACED = X3Y36;
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_2 [15:8] INPUT = microblaze_0_bram_block_combined_2.mem PLACED = X2Y32;
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_3 [7:0] INPUT = microblaze_0_bram_block_combined_3.mem PLACED = X2Y30;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;

View File

@ -1,180 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
<xsl:output method="xml"
version="1.0"
encoding="UTF-8" indent="yes"
doctype-public="-//W3C//DTD SVG Tiny 1.1//EN"
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.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>

View File

@ -1,150 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!-- Generic colors, shared between modules like webpages diagrams and pdfs -->
<xsl:variable name="COL_XLNX" select="'#AA0017'"/>
<xsl:variable name="COL_BLACK" select="'#000000'"/>
<xsl:variable name="COL_WHITE" select="'#FFFFFF'"/>
<xsl:variable name="COL_GRAY" select="'#CECECE'"/>
<xsl:variable name="COL_GRAY_LT" select="'#E1E1E1'"/>
<xsl:variable name="COL_GRAY_DK" select="'#B1B1B1'"/>
<xsl:variable name="COL_YELLOW" select="'#FFFFDD'"/>
<xsl:variable name="COL_YELLOW_LT" select="'#FFFFEE'"/>
<xsl:variable name="COL_RED" select="'#AA0000'"/>
<xsl:variable name="COL_GREEN" select="'#33CC33'"/>
<xsl:variable name="COL_BLUE_LT" select="'#AAAAFF'"/>
<!-- Colors specific to the Diagrams -->
<xsl:variable name="COL_BG" select="'#CCCCCC'"/>
<xsl:variable name="COL_BG_LT" select="'#EEEEEE'"/>
<xsl:variable name="COL_BG_UNK" select="'#DDDDDD'"/>
<xsl:variable name="COL_PROC_BG" select="'#FFCCCC'"/>
<xsl:variable name="COL_PROC_BG_MB" select="'#222222'"/>
<xsl:variable name="COL_PROC_BG_PP" select="'#90001C'"/>
<xsl:variable name="COL_PROC_BG_USR" select="'#666699'"/>
<xsl:variable name="COL_MPMC_BG" select="'#8B0800'"/>
<xsl:variable name="COL_MOD_BG" select="'#F0F0F0'"/>
<xsl:variable name="COL_MOD_SPRT" select="'#888888'"/>
<xsl:variable name="COL_MOD_MPRT" select="'#888888'"/>
<xsl:variable name="COL_IORING" select="'#000088'"/>
<xsl:variable name="COL_IORING_LT" select="'#CCCCFF'"/>
<xsl:variable name="COL_SYSPRT" select="'#0000BB'"/>
<xsl:variable name="COL_INTCS">
<INTCCOLOR INDEX="0" RGB="#FF9900"/>
<INTCCOLOR INDEX="1" RGB="#00CCCC"/>
<INTCCOLOR INDEX="2" RGB="#33FF33"/>
<INTCCOLOR INDEX="3" RGB="#FF00CC"/>
<INTCCOLOR INDEX="4" RGB="#99FF33"/>
<INTCCOLOR INDEX="5" RGB="#0066CC"/>
<INTCCOLOR INDEX="6" RGB="#9933FF"/>
<INTCCOLOR INDEX="7" RGB="#3300FF"/>
<INTCCOLOR INDEX="8" RGB="#00FF33"/>
<INTCCOLOR INDEX="9" RGB="#FF3333"/>
</xsl:variable>
<xsl:variable name="COL_BUSSTDS">
<BUSCOLOR BUSSTD="AXI" RGB="#0084AB" RGB_LT="#D0E6EF" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="XIL" RGB="#990066" RGB_LT="#CC3399" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="OCM" RGB="#0000DD" RGB_LT="#9999DD" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="OPB" RGB="#339900" RGB_LT="#CCDDCC" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="LMB" RGB="#7777FF" RGB_LT="#DDDDFF" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="FSL" RGB="#CC00CC" RGB_LT="#FFBBFF" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="DCR" RGB="#6699FF" RGB_LT="#BBDDFF" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="FCB" RGB="#8C00FF" RGB_LT="#CCCCFF" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="PLB" RGB="#FF5500" RGB_LT="#FFBB00" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="PLBV34" RGB="#FF5500" RGB_LT="#FFBB00" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="PLBV46" RGB="#BB9955" RGB_LT="#FFFFDD" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="PLBV46_P2P" RGB="#BB9955" RGB_LT="#FFFFDD" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="USER" RGB="#009999" RGB_LT="#00CCCC" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="KEY" RGB="#444444" RGB_LT="#888888" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
<BUSCOLOR BUSSTD="GRAYSCALE" RGB="#444444" RGB_LT="#888888" RGB_DK="#85C3D9" RGB_TXT="#FFFFFF"/>
</xsl:variable>
<xsl:variable name = "COL_BUSSTDS_NUMOF" select="count(exsl:node-set($COL_BUSSTDS)/BUSCOLOR)"/>
<xsl:template name="F_BusStd2RGB">
<xsl:param name="iBusStd" select="'USER'"/>
<xsl:choose>
<xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB">
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'USER')]/@RGB"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="F_BusStd2RGB_LT">
<xsl:param name="iBusStd" select="'USER'"/>
<xsl:choose>
<xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_LT">
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_LT"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'USER')]/@RGB_LT"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="F_BusStd2RGB_DK">
<xsl:param name="iBusStd" select="'USER'"/>
<xsl:choose>
<xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_DK">
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_DK"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'USER')]/@RGB_DK"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="F_BusStd2RGB_TXT">
<xsl:param name="iBusStd" select="'USER'"/>
<xsl:choose>
<xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_TXT">
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_TXT"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'USER')]/@RGB_TXT"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="F_IntcIdx2RGB">
<xsl:param name="iIntcIdx" select="'0'"/>
<xsl:variable name="index_" select="$iIntcIdx mod 9"/>
<xsl:choose>
<xsl:when test="exsl:node-set($COL_INTCS)/INTCCOLOR[(@INDEX = $index_)]/@RGB">
<xsl:value-of select="exsl:node-set($COL_INTCS)/INTCCOLOR[(@INDEX = $index_)]/@RGB"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="exsl:node-set($COL_INTCS)/INTCCOLOR[(@INDEX = '0')]/@RGB"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,168 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE stylesheet [
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
<!ENTITY HEXUPPER "ABCDEFxX0123456789">
<!ENTITY HEXLOWER "abcdefxX0123456789">
<!ENTITY HEXU2L " '&HEXLOWER;' , '&HEXUPPER;' ">
<!ENTITY ALLMODS "MODULE[(@INSTANCE)]">
<!ENTITY BUSMODS "MODULE[(@MODCLASS ='BUS')]">
<!ENTITY CPUMODS "MODULE[(@MODCLASS ='PROCESSOR')]">
<!ENTITY MODIOFS "MODULE/IOINTERFACES/IOINTERFACE">
<!ENTITY ALLIOFS "&MODIOFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<!ENTITY V11MODBIFS "MODULE/BUSINTERFACE">
<!ENTITY V12MODBIFS "MODULE/BUSINTERFACES/BUSINTERFACE">
<!ENTITY V11ALLBIFS "&V11MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and @TYPE and @BUSSTD]">
<!ENTITY V12ALLBIFS "&V12MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and @TYPE and @BUSSTD]">
<!ENTITY V11MODPORTS "MODULE/PORT">
<!ENTITY V12MODPORTS "MODULE/PORTS/PORT">
<!ENTITY V11ALLPORTS "&V11MODPORTS;[ (not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<!ENTITY V12ALLPORTS "&V12MODPORTS;[ (not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<!ENTITY V11NDFPORTS "&V11MODPORTS;[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (not(@BUS) and not(@IOS)))]">
<!ENTITY V12NDFPORTS "&V12MODPORTS;[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (not(@BUS) and not(@IOS)))]">
<!ENTITY V11DEFPORTS "&V11MODPORTS;[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@BUS) or (@IOS)))]">
<!ENTITY V12DEFPORTS "&V12MODPORTS;[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@BUS) or (@IOS)))]">
]>
<!--
<!ENTITY MSTBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (@TYPE = 'MASTER')]">
<!ENTITY SLVBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (@TYPE = 'SLAVE')]">
<!ENTITY MOSBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@TYPE = 'MASTER') or (@TYPE = 'SLAVE'))]">
<!ENTITY P2PBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR'))]">
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math exsl dyn xlink">
<!--
======================================================
EDK SYSTEM (EDWARD) Globals.
======================================================
-->
<xsl:variable name="G_SYS_ROOT" select="/"/>
<!--
<xsl:variable name="G_SYS_DOC" select="dyn:evaluate($G_SYS_ROOT)"/>
<xsl:variable name="G_SYS_DOC" select="dyn:evaluate($G_SYS_ROOT)"/>
-->
<xsl:variable name="G_SYS" select="$G_SYS_ROOT/EDKSYSTEM"/>
<xsl:variable name="G_SYS_TIMESTAMP" select="$G_SYS/@TIMESTAMP"/>
<xsl:variable name="G_SYS_EDKVERSION" select="$G_SYS/@EDKVERSION"/>
<xsl:variable name="G_SYS_INFO" select="$G_SYS/SYSTEMINFO"/>
<xsl:variable name="G_SYS_INFO_PKG" select="$G_SYS_INFO/@PACKAGE"/>
<xsl:variable name="G_SYS_INFO_DEV" select="$G_SYS_INFO/@DEVICE"/>
<xsl:variable name="G_SYS_INFO_ARCH" select="$G_SYS_INFO/@ARCH"/>
<xsl:variable name="G_SYS_INFO_SPEED" select="$G_SYS_INFO/@SPEEDGRADE"/>
<xsl:variable name="G_SYS_MODS" select="$G_SYS/MODULES"/>
<xsl:variable name="G_SYS_EXPS" select="$G_SYS/EXTERNALPORTS"/>
<!-- INDEX KEYS FOR FAST ACCESS -->
<xsl:key name="G_MAP_MODULES" match="&ALLMODS;" use="@INSTANCE"/>
<xsl:key name="G_MAP_PROCESSORS" match="&CPUMODS;" use="@INSTANCE"/>
<xsl:key name="G_MAP_BUSSES" match="&BUSMODS;" use="@INSTANCE"/>
<xsl:key name="G_MAP_BUSSES" match="&BUSMODS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_BUSSES" match="&BUSMODS;" use="@BUSSTD_PSF"/>
<xsl:key name="G_MAP_ALL_IOFS" match="&ALLIOFS;" use="../../@INSTANCE"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V11ALLBIFS;" use="@TYPE"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V12ALLBIFS;" use="@TYPE"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V11ALLBIFS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V12ALLBIFS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V11ALLBIFS;" use="@BUSSTD_PSF"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V12ALLBIFS;" use="@BUSSTD_PSF"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V11ALLBIFS;" use="../@INSTANCE"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&V12ALLBIFS;" use="../../@INSTANCE"/>
<!--
<xsl:key name="G_MAP_ALL_BIFS_BY_BUS" match="&ALLBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_ALL_BIFS_BY_STD" match="&ALLBIFS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_ALL_BIFS_BY_STD" match="&ALLBIFS;" use="@BUSSTD_PSF"/>
<xsl:key name="G_MAP_MST_BIFS" match="&MSTBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_SLV_BIFS" match="&SLVBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_MOS_BIFS" match="&MOSBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_P2P_BIFS" match="&P2PBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_P2P_BIFS" match="&P2PBIFS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_P2P_BIFS" match="&P2PBIFS;" use="@BUSSTD_PSF"/>
-->
<xsl:key name="G_MAP_ALL_PORTS" match="&V11ALLPORTS;" use="../@INSTANCE"/>
<xsl:key name="G_MAP_ALL_PORTS" match="&V12ALLPORTS;" use="../../@INSTANCE"/>
<xsl:key name="G_MAP_DEF_PORTS" match="&V11DEFPORTS;" use="../@INSTANCE"/> <!-- Default ports -->
<xsl:key name="G_MAP_DEF_PORTS" match="&V12DEFPORTS;" use="../../@INSTANCE"/> <!-- Default ports -->
<xsl:key name="G_MAP_NDF_PORTS" match="&V11NDFPORTS;" use="../@INSTANCE"/> <!-- Non Default ports -->
<xsl:key name="G_MAP_NDF_PORTS" match="&V12NDFPORTS;" use="../../@INSTANCE"/> <!-- Non Default ports -->
<xsl:variable name="G_BIFTYPES">
<BIFTYPE TYPE="SLAVE"/>
<BIFTYPE TYPE="MASTER"/>
<BIFTYPE TYPE="MASTER_SLAVE"/>
<BIFTYPE TYPE="TARGET"/>
<BIFTYPE TYPE="INITIATOR"/>
<BIFTYPE TYPE="MONITOR"/>
<BIFTYPE TYPE="USER"/>
<BIFTYPE TYPE="TRANSPARENT"/>
</xsl:variable>
<xsl:variable name="G_BIFTYPES_NUMOF" select="count(exsl:node-set($G_BIFTYPES)/BIFTYPE)"/>
<xsl:variable name="G_IFTYPES">
<IFTYPE TYPE="SLAVE"/>
<IFTYPE TYPE="MASTER"/>
<IFTYPE TYPE="MASTER_SLAVE"/>
<IFTYPE TYPE="TARGET"/>
<IFTYPE TYPE="INITIATOR"/>
<IFTYPE TYPE="MONITOR"/>
<IFTYPE TYPE="USER"/>
<!--
<IFTYPE TYPE="TRANSPARENT"/>
-->
</xsl:variable>
<xsl:variable name="G_IFTYPES_NUMOF" select="count(exsl:node-set($G_IFTYPES)/IFTYPE)"/>
<xsl:variable name="G_BUSSTDS">
<BUSSTD NAME="AXI"/>
<BUSSTD NAME="XIL"/>
<BUSSTD NAME="OCM"/>
<BUSSTD NAME="OPB"/>
<BUSSTD NAME="LMB"/>
<BUSSTD NAME="FSL"/>
<BUSSTD NAME="DCR"/>
<BUSSTD NAME="FCB"/>
<BUSSTD NAME="PLB"/>
<BUSSTD NAME="PLB34"/>
<BUSSTD NAME="PLBV46"/>
<BUSSTD NAME="PLBV46_P2P"/>
<BUSSTD NAME="USER"/>
<BUSSTD NAME="KEY"/>
</xsl:variable>
<xsl:variable name="G_BUSSTDS_NUMOF" select="count(exsl:node-set($G_BUSSTDS)/BUSSTD)"/>
</xsl:stylesheet>

View File

@ -1,584 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
doctype-public="-//W3C//DTD SVG 1.0//EN"
doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
-->
<!--
======================================================
Function to put TEXT CSS and other Internal
Styling properties directly into the output
svg. The Qt 4.3 Renderer
cannot handle separate CSS StyleSheets
======================================================
-->
<xsl:template name="F_WriteText">
<xsl:param name="iClass" select="'_UNKNOWN_'"/>
<xsl:param name="iText" select="' '"/>
<xsl:param name="iX" select="'0'"/>
<xsl:param name="iY" select="'0'"/>
<!--
<xsl:message>TEXT <xsl:value-of select="$iText"/></xsl:message>
<xsl:message>CLASS <xsl:value-of select="$iClass"/></xsl:message>
-->
<xsl:element name="text">
<xsl:attribute name="x"><xsl:value-of select="$iX"/></xsl:attribute>
<xsl:attribute name="y"><xsl:value-of select="$iY"/></xsl:attribute>
<xsl:choose>
<xsl:when test="$iClass = 'sharedbus_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'12pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'p2pbus_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'p2pbus_label_horiz'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'12pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="writing-mode"><xsl:value-of select="'tb'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'bif_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'bc_ipinst'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'bc_iptype'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_XLNX"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'iogrp_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_IORING"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'mpmc_title'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_WHITE"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'16pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'oblique'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'mpmc_biflabel'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_WHITE"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'intr_symbol'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'bkt_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'9pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'ipclass_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'9pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'key_header'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'key_title'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_XLNX"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'14pt'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'key_label'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'key_label_small'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'key_label_ul'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="text-decoration"><xsl:value-of select="'underline'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'ipd_portlabel'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'ipd_biflabel'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'ipd_iptype'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_XLNX"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'ipd_ipname'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'blkd_spec_name'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:when test="$iClass = 'blkd_spec_value_mid'">
<xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
<xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
<xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
<xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
<xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
<xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="'Courier Arial Helvetica san-serif'"/></xsl:attribute>
</xsl:when>
<xsl:otherwise><xsl:message>UNKNOWN Text style class <xsl:value-of select="$iClass"/></xsl:message></xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$iText"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
<!--
text.ioplblgrp {
fill: #000088;
stroke: none;
font-size: 10pt;
font-style: normal;
font-weight: 900;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.iplabel {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: 800;
text-anchor: middle;
font-family: Courier Arial Helvetica sans-serif;
}
text.iptype {
fill: #AA0017;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: bold;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.busintlabel {
fill: #810017;
stroke: none;
font-size: 7pt;
font-style: italic;
font-weight: 900;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.mpmcbiflabel {
fill: #FFFFFF;
stroke: none;
font-size: 6pt;
font-style: normal;
font-weight: 900;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.buslabel {
fill: #CC3333;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: bold;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.ipclass {
fill: #000000;
stroke: none;
font-size: 7pt;
font-style: normal;
font-weight: bold;
text-anchor: start;
font-family: Times Arial Helvetica sans-serif;
}
text.procclass {
fill: #000000;
stroke: none;
font-size: 7pt;
font-style: normal;
font-weight: bold;
text-anchor: middle;
font-family: Times Arial Helvetica sans-serif;
}
text.portlabel {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: normal;
font-weight: bold;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.ipdbiflbl {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: normal;
font-weight: bold;
font-family: Verdana Arial Helvetica sans-serif;
}
text.mmMHeader {
fill: #FFFFFF;
stroke: none;
font-size: 10pt;
font-style: normal;
font-weight: bold;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.mmSHeader {
fill: #810017;
stroke: none;
font-size: 10pt;
font-style: normal;
font-weight: bold;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.dbglabel {
fill: #555555;
stroke: none;
font-size: 8pt;
font-style: normal;
font-weight: 900;
text-anchor: middle;
font-family: Times Arial Helvetica sans-serif;
}
text.iopnumb {
fill: #555555;
stroke: none;
font-size: 10pt;
font-style: normal;
font-weight: 900;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
tspan.iopgrp {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: normal;
font-weight: 900;
text-anchor: middle;
baseline-shift:super;
font-family: Arial Courier san-serif;
}
text.biflabel {
fill: #000000;
stroke: none;
font-size: 6pt;
font-style: normal;
font-weight: 900;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.p2pbuslabel {
fill: #000000;
stroke: none;
font-size: 10pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
writing-mode: tb;
font-family: Verdana Arial Helvetica sans-serif;
}
text.mpbuslabel {
fill: #000000;
stroke: none;
font-size: 6pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
writing-mode: tb;
font-family: Verdana Arial Helvetica sans-serif;
}
text.sharedbuslabel {
fill: #000000;
stroke: none;
font-size: 10pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
font-family: Verdana Arial Helvetica sans-serif;
}
text.splitbustxt {
fill: #000000;
stroke: none;
font-size: 6pt;
font-style: normal;
font-weight: bold;
text-anchor: middle;
font-family: sans-serif;
}
text.horizp2pbuslabel {
fill: #000000;
stroke: none;
font-size: 6pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
font-family: Verdana Arial Helvetica sans-serif;
}
text.keytitle {
fill: #AA0017;
stroke: none;
font-size: 12pt;
font-weight: bold;
text-anchor: middle;
font-family: Arial Helvetica sans-serif;
}
text.keyheader {
fill: #000000;
stroke: none;
font-size: 10pt;
font-weight: bold;
text-anchor: middle;
font-family: Arial Helvetica sans-serif;
}
text.keylabel {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
font-family: Verdana Arial Helvetica sans-serif;
}
text.keylblul {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
text-decoration: underline;
font-family: Verdana Arial Helvetica sans-serif;
}
text.specsheader {
fill: #000000;
stroke: none;
font-size: 10pt;
font-weight: bold;
text-anchor: start;
font-family: Arial Helvetica sans-serif;
}
text.specsvalue {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: bold;
text-anchor: start;
font-family: Verdana Arial Helvetica sans-serif;
}
text.specsvaluemid {
fill: #000000;
stroke: none;
font-size: 8pt;
font-style: italic;
font-weight: bold;
text-anchor: middle;
font-family: Verdana Arial Helvetica sans-serif;
}
text.intrsymbol {
fill: #000000;
stroke: none;
font-size: 8pt;
font-weight: bold;
text-anchor: start;
font-family: Arial Helvetica sans-serif;
}
-->

View File

@ -1,546 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
<xsl:output method="xml"
version="1.0"
encoding="UTF-8"
indent="yes"
doctype-public="-//W3C//DTD SVG 1.0//EN"
doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
-->
<xsl:template name="Define_Busses">
<!--
<xsl:param name="drawarea_w" select="500"/>
<xsl:param name="drawarea_h" select="500"/>
-->
<xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR">
<xsl:call-template name="Define_BusArrowsEastWest">
<xsl:with-param name="iBusStd" select="@BUSSTD"/>
</xsl:call-template>
<xsl:call-template name="Define_BusArrowsNorthSouth">
<xsl:with-param name="iBusStd" select="@BUSSTD"/>
</xsl:call-template>
<xsl:call-template name="Define_SplitBusses">
<xsl:with-param name="iBusStd" select="@BUSSTD"/>
</xsl:call-template>
</xsl:for-each>
<xsl:call-template name="Define_SharedBus">
<xsl:with-param name="iBusStd" select="'AXI'"/>
</xsl:call-template>
<xsl:call-template name="Define_SharedBus">
<xsl:with-param name="iBusStd" select="'OPB'"/>
</xsl:call-template>
<xsl:call-template name="Define_SharedBus">
<xsl:with-param name="iBusStd" select="'PLB'"/>
</xsl:call-template>
<xsl:call-template name="Define_SharedBus">
<xsl:with-param name="iBusStd" select="'PLBV46'"/>
</xsl:call-template>
<xsl:call-template name="Define_SharedBus_Group"/>
</xsl:template>
<xsl:template name="Define_BusArrowsEastWest">
<xsl:param name="iBusStd" select="'PLB'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="busStdColor_lt_">
<xsl:call-template name="F_BusStd2RGB_LT">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<g id="{$iBusStd}_BusArrowEast">
<path class="bus"
d="M 0,0
L {$BLKD_BUS_ARROW_W}, {ceiling($BLKD_BUS_ARROW_H div 2)}
L 0,{$BLKD_BUS_ARROW_H},
Z" style="stroke:none; fill:{$busStdColor_}"/>
</g>
<g id="{$iBusStd}_BusArrowWest">
<use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowEast" transform="scale(-1,1) translate({$BLKD_BUS_ARROW_W * -1},0)"/>
</g>
<g id="{$iBusStd}_BusArrowHInitiator">
<rect x="0"
y="{$BLKD_BUS_ARROW_G}"
width= "{$BLKD_BUS_ARROW_W}"
height="{$BLKD_P2P_BUS_W}"
style="stroke:none; fill:{$busStdColor_}"/>
</g>
</xsl:template>
<!--
<xsl:param name="bus_col" select="'OPB'"/>
-->
<xsl:template name="Define_BusArrowsNorthSouth">
<xsl:param name="iBusStd" select="'PLB'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="busStdColor_lt_">
<xsl:call-template name="F_BusStd2RGB_LT">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<g id="{$iBusStd}_BusArrowSouth">
<path class="bus"
d="M 0,0
L {$BLKD_BUS_ARROW_H},0
L {ceiling($BLKD_BUS_ARROW_H div 2)}, {$BLKD_BUS_ARROW_W}
Z" style="stroke:none; fill:{$busStdColor_}"/>
</g>
<g id="{$iBusStd}_BusArrowNorth">
<use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowSouth" transform="scale(1,-1) translate(0,{$BLKD_BUS_ARROW_H * -1})"/>
</g>
<g id="{$iBusStd}_BusArrowInitiator">
<rect x="{$BLKD_BUS_ARROW_G}"
y="0"
width= "{$BLKD_BUS_ARROW_W - ($BLKD_BUS_ARROW_G * 2)}"
height="{$BLKD_BUS_ARROW_H}"
style="stroke:none; fill:{$busStdColor_}"/>
</g>
</xsl:template>
<xsl:template name="Draw_P2PBus">
<xsl:param name="iBusX" select="0"/>
<xsl:param name="iBusTop" select="0"/>
<xsl:param name="iBusBot" select="0"/>
<xsl:param name="iBusStd" select="'_bstd_'"/>
<xsl:param name="iBusName" select="'_p2pbus_'"/>
<xsl:param name="iBotBifType" select="'_unk_'"/>
<xsl:param name="iTopBifType" select="'_unk_'"/>
<xsl:variable name="busStdColor_">
<xsl:choose>
<xsl:when test="@BUSSTD">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="@BUSSTD"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="not($iBusStd = '_bstd_')">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="'TRS'"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="p2pH_" select="($iBusBot - $iBusTop) - ($BLKD_BUS_ARROW_H * 2)"/>
<xsl:variable name="botArrow_">
<xsl:choose>
<xsl:when test="((($iBotBifType = 'INITIATOR') or ($iBotBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowInitiator</xsl:when>
<xsl:otherwise>BusArrowSouth</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="topArrow_">
<xsl:choose>
<xsl:when test="((($iTopBifType = 'INITIATOR') or ($iTopBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowInitiator</xsl:when>
<xsl:otherwise>BusArrowNorth</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="@BUSSTD">
<use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
y="{$iBusTop + ($BLKD_BIFC_H - $BLKD_BUS_ARROW_H) + $BLKD_BUS_ARROW_H}"
xlink:href="#{@BUSSTD}_{$topArrow_}"/>
<use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
y="{$iBusBot - $BLKD_BUS_ARROW_H}"
xlink:href="#{@BUSSTD}_{$botArrow_}"/>
</xsl:if>
<xsl:if test="(not(@BUSSTD) and not($iBusStd = '_bstd_'))">
<use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
y="{$iBusTop + ($BLKD_BIFC_H - $BLKD_BUS_ARROW_H) + $BLKD_BUS_ARROW_H}"
xlink:href="#{$iBusStd}_{$topArrow_}"/>
<use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
y="{$iBusBot - $BLKD_BUS_ARROW_H}"
xlink:href="#{$iBusStd}_{$botArrow_}"/>
</xsl:if>
<rect x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2) + $BLKD_BUS_ARROW_G}"
y="{$iBusTop + $BLKD_BIFC_H + $BLKD_BUS_ARROW_H}"
height= "{$p2pH_ - ($BLKD_BUS_ARROW_H * 2)}"
width="{$BLKD_BUS_ARROW_W - ($BLKD_BUS_ARROW_G * 2)}"
style="stroke:none; fill:{$busStdColor_}"/>
<!--
<text class="p2pbuslabel"
x="{$iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4}"
y="{$iBusTop + ($BLKD_BUS_ARROW_H * 3)}">
<xsl:value-of select="$iBusName"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="($iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4)"/>
<xsl:with-param name="iY" select="($iBusTop + ($BLKD_BUS_ARROW_H * 3))"/>
<xsl:with-param name="iText" select="$iBusName"/>
<xsl:with-param name="iClass" select="'p2pbus_label'"/>
</xsl:call-template>
<xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP">
<!--
<text class="ioplblgrp"
x="{$iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
y="{$iBusTop + ($BLKD_BUS_ARROW_H * 10)}">
<xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="(iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
<xsl:with-param name="iY" select="($iBusTop + ($BLKD_BUS_ARROW_H * 10))"/>
<xsl:with-param name="iText" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP"/>
<xsl:with-param name="iClass" select="'iogrp_label'"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="Draw_Proc2ProcBus">
<xsl:param name="iBc_Y" select="0"/>
<xsl:param name="iBusStd" select="'_bstd_'"/>
<xsl:param name="iBusName" select="'_p2pbus_'"/>
<xsl:param name="iBcLeft_X" select="0"/>
<xsl:param name="iBcRght_X" select="0"/>
<xsl:param name="iLeftBifType" select="'_unk_'"/>
<xsl:param name="iRghtBifType" select="'_unk_'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="pr2pr_W_" select="($iBcRght_X - $iBcLeft_X)"/>
<xsl:variable name="leftArrow_">
<xsl:choose>
<xsl:when test="((($iLeftBifType = 'INITIATOR') or ($iLeftBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
<xsl:otherwise>BusArrowWest</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="rghtArrow_">
<xsl:choose>
<xsl:when test="((($iRghtBifType = 'INITIATOR') or ($iRghtBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
<xsl:otherwise>BusArrowEast</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="bus_Y_" select="($iBc_Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
<use x="{$iBcLeft_X}" y="{$bus_Y_}" xlink:href="#{$iBusStd}_{$leftArrow_}"/>
<use x="{$iBcRght_X - $BLKD_BUS_ARROW_W}" y="{$bus_Y_}" xlink:href="#{$iBusStd}_{$rghtArrow_}"/>
<rect x="{$iBcLeft_X + $BLKD_BUS_ARROW_W}"
y="{$bus_Y_ + $BLKD_BUS_ARROW_G}"
width= "{$pr2pr_W_ - (2 * $BLKD_BUS_ARROW_W)}"
height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
<!--
<text class="horizp2pbuslabel"
x="{$iBcLeft_X + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4}"
y="{($bus_Y_)}"><xsl:value-of select="$iBusName"/></text>
<text class="horizp2pbuslabel"
x="{$iBcRght_X - (string-length($iBusName) * 8)}"
y="{($bus_Y_)}"><xsl:value-of select="$iBusName"/></text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="($iBcLeft_X + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4)"/>
<xsl:with-param name="iY" select="$bus_Y_"/>
<xsl:with-param name="iText" select="$iBusName"/>
<xsl:with-param name="iClass" select="'p2pbus_label'"/>
</xsl:call-template>
<!--
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="(iBcRght_X - (string-length($iBusName) * 8))"/>
<xsl:with-param name="iY" select="$bus_Y_"/>
<xsl:with-param name="iText" select="$iBusName"/>
<xsl:with-param name="iClass" select="'p2pbus_label'"/>
</xsl:call-template>
-->
</xsl:template>
<xsl:template name="Draw_SplitConnBus">
<xsl:param name="iBc_X" select="0"/>
<xsl:param name="iBc_Y" select="0"/>
<xsl:param name="iBc_Type" select="'_unk_'"/>
<xsl:param name="iBc_Side" select="'_unk_'"/>
<xsl:param name="iBusStd" select="'_bstd_'"/>
<xsl:param name="iBusName" select="'_p2pbus_'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="connArrow_">
<xsl:choose>
<xsl:when test="((($iBc_Type = 'INITIATOR') or ($iBc_Type = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
<xsl:otherwise>BusArrowEast</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="arrow_Y_" select="($iBc_Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
<xsl:variable name="bus_X_">
<xsl:choose>
<xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($iBc_X - ($BLKD_BUS_ARROW_W * 2))"/></xsl:when>
<xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($iBc_X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/></xsl:when>
</xsl:choose>
</xsl:variable>
<!--
<use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_BusArrowHInitiator"/>
-->
<xsl:variable name="arrow_X_">
<xsl:choose>
<xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($iBc_X - $BLKD_BUS_ARROW_W)"/></xsl:when>
<xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($iBc_X + $BLKD_BIFC_W)"/></xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="(($iBusStd = 'FSL') and (($iBc_Type = 'MASTER') or ($iBc_Type = 'INITIATOR')))">
<use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_{$connArrow_}"/>
<use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_BusArrowHInitiator"/>
</xsl:when>
<xsl:when test="(($iBc_Side = '1') and not($iBusStd = 'FSL') and (($iBc_Type = 'MASTER') or ($iBc_Type = 'INITIATOR')))">
<use x="{$arrow_X_ - $BLKD_BIFC_W}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_SplitBus_WEST"/>
</xsl:when>
<xsl:when test="(($iBc_Side = '1') and (($iBc_Type = 'SLAVE') or ($iBc_Type = 'TARGET') or ($iBc_Type = 'USER')))">
<use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_SplitBus_EAST"/>
</xsl:when>
<xsl:otherwise>
<use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_{$connArrow_}"/>
<use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_BusArrowHInitiator"/>
</xsl:otherwise>
</xsl:choose>
<xsl:variable name="text_X_">
<xsl:choose>
<xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($bus_X_ - $BLKD_BUS_ARROW_W - (string-length($iBusName) * 5))"/></xsl:when>
<xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($bus_X_ + $BLKD_BUS_ARROW_W)"/></xsl:when>
</xsl:choose>
</xsl:variable>
<!--
<text class="horizp2pbuslabel"
x="{$text_X_}"
y="{($arrow_Y_)}">
<xsl:value-of select="$iBusName"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="$text_X_"/>
<xsl:with-param name="iY" select="$arrow_Y_"/>
<xsl:with-param name="iText" select="$iBusName"/>
<xsl:with-param name="iClass" select="'p2pbus_label'"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="Define_SharedBus">
<xsl:param name="iBusStd" select="'PLB46'"/>
<xsl:variable name="sharedbus_w_" select="($G_Total_DrawArea_W - ($BLKD_INNER_GAP * 2))"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="busStdColor_lt_">
<xsl:call-template name="F_BusStd2RGB_LT">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<g id="{$iBusStd}_SharedBus">
<use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowWest"/>
<use x="{$sharedbus_w_ - $BLKD_BUS_ARROW_W}" y="0" xlink:href="#{$iBusStd}_BusArrowEast"/>
<rect x="{$BLKD_BUS_ARROW_W}"
y="{$BLKD_BUS_ARROW_G}"
width= "{$sharedbus_w_ - ($BLKD_BUS_ARROW_W * 2)}"
height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
</g>
</xsl:template>
<xsl:template name="Define_SplitBusses">
<xsl:param name="iBusStd" select="'FSL'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="bifc_r_" select="ceiling($BLKD_BIFC_W div 3)"/>
<g id="{$iBusStd}_SplitBus_EAST">
<use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowWest"/>
<rect x="{$BLKD_BUS_ARROW_W}"
y="{$BLKD_BUS_ARROW_G}"
width= "{$BLKD_BIFC_W}"
height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
</g>
<xsl:variable name="splbus_w_" select="($BLKD_BUS_ARROW_W + $BLKD_BIFC_W + $BLKD_BIFC_Wi)"/>
<g id="{$iBusStd}_SplitBus_WEST">
<use x="0" y="0" xlink:href="#{$iBusStd}_SplitBus_EAST" transform="scale(-1,1) translate({$splbus_w_ * -1},0)"/>
</g>
<g id="{$iBusStd}_SplitBus_OneWay">
<rect x="0"
y="{$BLKD_BUS_ARROW_G}"
width= "{($BLKD_BUS_ARROW_W * 2)}"
height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
<rect x="{($BLKD_BUS_ARROW_W * 2)}"
y="0"
width= "{$BLKD_BUS_ARROW_H}"
height="{$BLKD_BUS_ARROW_H}" style="stroke:none; fill:{$busStdColor_}"/>
</g>
</xsl:template>
<xsl:template name="Define_SharedBus_Group">
<!-- The Bridges go into the shared bus shape -->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE">
<xsl:variable name="modInst_" select="@INSTANCE"/>
<xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
<xsl:call-template name="Define_Peripheral">
<xsl:with-param name="iModVori" select="'normal'"/>
<xsl:with-param name="iModInst" select="$modInst_"/>
<xsl:with-param name="iModType" select="$modType_"/>
</xsl:call-template>
</xsl:for-each>
<g id="group_sharedBusses">
<!-- Draw the shared bus shapes first -->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE">
<xsl:variable name="instance_" select="@INSTANCE"/>
<xsl:variable name="busStd_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUSSTD"/>
<xsl:variable name="busIndex_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUS_INDEX"/>
<xsl:variable name="busY_" select="($busIndex_ * $BLKD_SBS_LANE_H)"/>
<use x="0" y="{$busY_}" xlink:href="#{$busStd_}_SharedBus"/>
<!--
<text class="sharedbuslabel"
x="8"
y="{$busY_ + $BLKD_BUS_ARROW_H + 10}">
<xsl:value-of select="$instance_"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="'8'"/>
<xsl:with-param name="iY" select="($busY_ + $BLKD_BUS_ARROW_H + 10)"/>
<xsl:with-param name="iText" select="$instance_"/>
<xsl:with-param name="iClass" select="'sharedbus_label'"/>
</xsl:call-template>
</xsl:for-each>
</g>
<g id="KEY_SharedBus">
<use x="0" y="0" xlink:href="#KEY_BusArrowWest"/>
<use x="30" y="0" xlink:href="#KEY_BusArrowEast"/>
<xsl:variable name="key_col_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="'KEY'"/>
</xsl:call-template>
</xsl:variable>
<rect x="{$BLKD_BUS_ARROW_W}"
y="{$BLKD_BUS_ARROW_G}"
width= "{30 - $BLKD_BUS_ARROW_W}"
height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$key_col_}"/>
</g>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,115 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<xsl:variable name="G_ROOT" select="/"/>
<!--
===========================================================================
CALCULATE GLOBAL VARIABLES BASED ON BLKDIAGRAM DEF IN INPUT XML
===========================================================================
-->
<xsl:variable name="G_Total_StandAloneMpmc_H">
<xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE">
<xsl:value-of select="($BLKD_MPMC_MOD_H + $BLKD_MPMC2PROC_GAP)"/>
</xsl:if>
<xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE)">0</xsl:if>
</xsl:variable>
<xsl:variable name="G_Max_Stack_BlwSbs_H">
<xsl:call-template name="F_Calc_Max_Stack_BlwSbs_Height"/>
</xsl:variable>
<xsl:variable name="G_Max_Stack_AbvSbs_H">
<xsl:call-template name="F_Calc_Max_Stack_AbvSbs_Height"/>
</xsl:variable>
<xsl:variable name="G_Total_Stacks_W">
<xsl:call-template name="F_Calc_Stack_X">
<xsl:with-param name="iStackIdx" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="G_NumOfSharedBusses" select="count($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE)"/>
<xsl:variable name="G_Total_SharedBus_H" select="($G_NumOfSharedBusses * $BLKD_SBS_LANE_H)"/>
<xsl:variable name="G_NumOfBridges" select="count($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE)"/>
<xsl:variable name="G_Total_Bridges_W" select="(($G_NumOfBridges * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))) + $BLKD_BRIDGE_GAP)"/>
<xsl:variable name="G_Total_DrawArea_CLC" select="($G_Total_Stacks_W + $G_Total_Bridges_W + ($BLKD_INNER_GAP * 2))"/>
<xsl:variable name="G_Total_DrawArea_W">
<xsl:if test="$G_Total_DrawArea_CLC &gt; ($BLKD_KEY_W + $BLKD_SPECS_W + $BLKD_SPECS2KEY_GAP)">
<xsl:value-of select="$G_Total_DrawArea_CLC"/>
</xsl:if>
<xsl:if test="not($G_Total_DrawArea_CLC &gt; ($BLKD_KEY_W + $BLKD_SPECS2KEY_GAP + $BLKD_SPECS_W))">
<xsl:value-of select="($BLKD_KEY_W + $BLKD_SPECS_W + $BLKD_SPECS2KEY_GAP)"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="G_IpBucketMods_H">
<xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET/@MODS_H"><xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET/@MODS_H"/></xsl:if>
<xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET/@MODS_H)">0</xsl:if>
</xsl:variable>
<xsl:variable name="G_Total_IpBucket_H" select="($G_IpBucketMods_H * ($BLKD_MOD_H + $BLKD_BIF_H))"/>
<xsl:variable name="G_Total_UnkBucket_H">
<xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET">
<xsl:variable name="unkBucketMods_H_">
<xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@MODS_H"><xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@MODS_H"/></xsl:if>
<xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@MODS_H)">0</xsl:if>
</xsl:variable>
<xsl:variable name="total_UnkMod_H_" select="($unkBucketMods_H_ * ($BLKD_MOD_H + $BLKD_BIF_H))"/>
<xsl:variable name="unkBucketBifs_H_">
<xsl:if test="/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@BIFS_H"><xsl:value-of select="/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@BIFS_H"/></xsl:if>
<xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@BIFS_H)">0</xsl:if>
</xsl:variable>
<xsl:variable name="total_UnkBif_H_" select="($unkBucketBifs_H_ * ($BLKD_MOD_H + $BLKD_BIF_H))"/>
<xsl:value-of select="($total_UnkBif_H_ + $total_UnkMod_H_)"/>
</xsl:if>
<xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET)">0</xsl:if>
</xsl:variable>
<xsl:variable name="G_SharedBus_Y" select="($BLKD_INNER_Y + $G_Total_StandAloneMpmc_H + $G_Max_Stack_AbvSbs_H + $BLKD_PROC2SBS_GAP)"/>
<!-- ===========================================================================
Calculate the width of the Block Diagram based on the total number of
buslanes and modules in the design. If there are no buslanes or modules,
a default width, just wide enough to display the KEY and SPECS is used
=========================================================================== -->
<xsl:variable name="G_Total_Blkd_W" select="($G_Total_DrawArea_W + (($BLKD_PRTCHAN_W + $BLKD_IORCHAN_W)* 2))"/>
<xsl:variable name="G_Total_Diag_W" select="$G_Total_Blkd_W"/>
<!-- =========================================================================== -->
<!-- Calculate the height of the Block Diagram based on the total number of -->
<!-- buslanes and modules in the design. Take into account special shapes such -->
<!-- as MultiProc shapes. -->
<!-- =========================================================================== -->
<xsl:variable name="G_Total_DrawArea_H" select="($G_Total_StandAloneMpmc_H + $G_Max_Stack_AbvSbs_H + $BLKD_PROC2SBS_GAP + $G_Total_SharedBus_H + $G_Max_Stack_BlwSbs_H + $BLKD_SBS2IP_GAP + $G_Total_IpBucket_H + $BLKD_IP2UNK_GAP + $G_Total_UnkBucket_H + ($BLKD_INNER_GAP * 2))"/>
<xsl:variable name="G_Total_Blkd_H" select="($G_Total_DrawArea_H + (($BLKD_PRTCHAN_H + $BLKD_IORCHAN_H)* 2))"/>
<xsl:variable name="G_Total_Diag_H">
<xsl:if test="($IN_TESTMODE = 'TRUE')">
<xsl:message>Generating Blkdiagram in TestMode </xsl:message>
<xsl:value-of select="$G_Total_Blkd_H"/>
</xsl:if>
<xsl:if test="(not($IN_TESTMODE) or ($IN_TESTMODE = 'FALSE'))">
<xsl:value-of select="($G_Total_Blkd_H + $BLKD_DRAWAREA2KEY_GAP + $BLKD_KEY_H)"/>
</xsl:if>
</xsl:variable>
</xsl:stylesheet>

View File

@ -1,495 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
doctype-public="-//W3C//DTD SVG Tiny 1.1//EN"
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"/>
-->
<!-- ======================= DEF BLOCK =============================== -->
<xsl:template name="Define_IOPorts">
<xsl:variable name="key_col_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="'KEY'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="key_lt_col_">
<xsl:call-template name="F_BusStd2RGB_LT">
<xsl:with-param name="iBusStd" select="'KEY'"/>
</xsl:call-template>
</xsl:variable>
<g id="G_IOPort">
<rect
x="0"
y="0"
width= "{$BLKD_IOP_W}"
height="{$BLKD_IOP_H}"
fill="{$COL_IORING_LT}"
stroke="{$COL_IORING}"
stroke-width="1"/>
<path d="M 0,0
L {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
L 0,{$BLKD_IOP_H}
Z"
stroke="none"
fill="{$COL_SYSPRT}"/>
</g>
<g id="G_BIPort">
<rect
x="0"
y="0"
width= "{$BLKD_IOP_W}"
height="{$BLKD_IOP_H}" style="fill:{$COL_IORING_LT}; stroke:{$COL_IORING}; stroke-width:1"/>
<path class="btop"
d="M 0,{ceiling($BLKD_IOP_H div 2)}
{ceiling($BLKD_IOP_W div 2)},0
{$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
Z" style="stroke:none; fill:{$COL_SYSPRT}"/>
<path class="bbot"
d="M 0,{ceiling($BLKD_IOP_H div 2)}
{ceiling($BLKD_IOP_W div 2)},{$BLKD_IOP_H}
{$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
Z" style="stroke:none; fill:{$COL_SYSPRT}"/>
</g>
<g id="KEY_IOPort">
<rect
x="0"
y="0"
width= "{$BLKD_IOP_W}"
height="{$BLKD_IOP_H}" style="fill:{$key_lt_col_}; stroke:none;"/>
<path class="ioport"
d="M 0,0
L {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
L 0,{$BLKD_IOP_H}
Z" style="stroke:none; fill:{$key_col_}"/>
</g>
<g id="KEY_BIPort">
<rect
x="0"
y="0"
width= "{$BLKD_IOP_W}"
height="{$BLKD_IOP_H}" style="fill:{$key_lt_col_}; stroke:none;"/>
<path class="btop"
d="M 0,{ceiling($BLKD_IOP_H div 2)}
{ceiling($BLKD_IOP_W div 2)},0
{$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
Z" style="stroke:none; fill:{$key_col_}"/>
<path class="bbot"
d="M 0,{ceiling($BLKD_IOP_H div 2)}
{ceiling($BLKD_IOP_W div 2)},{$BLKD_IOP_H}
{$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
Z" style="stroke:none; fill:{$key_col_}"/>
</g>
<g id="KEY_INPort">
<use x="0" y="0" xlink:href="#KEY_IOPort"/>
<rect
x="{$BLKD_IOP_W}"
y="0"
width= "{ceiling($BLKD_IOP_W div 2)}"
height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/>
</g>
<g id="KEY_OUTPort">
<use x="0" y="0" xlink:href="#KEY_IOPort" transform="scale(-1,1) translate({$BLKD_IOP_W * -1},0)"/>
<rect
x="{$BLKD_IOP_W}"
y="0"
width= "{ceiling($BLKD_IOP_W div 2)}"
height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/>
</g>
<g id="KEY_INOUTPort">
<use x="0" y="0" xlink:href="#KEY_BIPort"/>
<rect
x="{$BLKD_IOP_W}"
y="0"
width= "{ceiling($BLKD_IOP_W div 2)}"
height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/>
</g>
</xsl:template>
<!-- ======================= DRAW BLOCK =============================== -->
<xsl:template name="Draw_IOPorts">
<xsl:variable name="ports_count_" select="count($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)"/>
<xsl:if test="($ports_count_ &gt; 30)">
<xsl:call-template name="Draw_IOPorts_4Sides"/>
</xsl:if>
<xsl:if test="($ports_count_ &lt;= 30)">
<xsl:call-template name="Draw_IOPorts_2Sides"/>
</xsl:if>
</xsl:template>
<xsl:template name="Draw_IOPorts_2Sides">
<xsl:variable name="ports_count_" select="count($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)"/>
<xsl:variable name="ports_per_side_" select="ceiling($ports_count_ div 2)"/>
<xsl:variable name="h_ofs_">
<xsl:value-of select="$BLKD_PRTCHAN_W + ceiling(($G_Total_DrawArea_W - (($ports_per_side_ * $BLKD_IOP_W) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
</xsl:variable>
<xsl:variable name="v_ofs_">
<xsl:value-of select="$BLKD_PRTCHAN_H + ceiling(($G_Total_DrawArea_H - (($ports_per_side_ * $BLKD_IOP_H) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
</xsl:variable>
<xsl:for-each select="EXTERNALPORTS/PORT">
<xsl:sort data-type="number" select="@INDEX" order="ascending"/>
<xsl:variable name="poffset_" select="0"/>
<xsl:variable name="pcount_" select="$poffset_ + (position() -1)"/>
<xsl:variable name="pdir_">
<xsl:choose>
<xsl:when test="(@DIR='I' or @DIR='IN' or @DIR='INPUT')">I</xsl:when>
<xsl:when test="(@DIR='O' or @DIR='OUT' or @DIR='OUTPUT')">O</xsl:when>
<xsl:when test="(@DIR='IO' or @DIR='INOUT')">B</xsl:when>
<xsl:otherwise>I</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pside_">
<xsl:choose>
<xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 0) and ($pcount_ &lt; ($ports_per_side_ * 1)))">W</xsl:when>
<xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 1) and ($pcount_ &lt; ($ports_per_side_ * 2)))">E</xsl:when>
<xsl:otherwise>D</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pdec_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="($ports_per_side_ * 0)"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="($ports_per_side_ * 1)"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="px_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="($BLKD_PRTCHAN_W - $BLKD_IOP_W)"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)) - 2)"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="($BLKD_PRTCHAN_W + ($BLKD_IORCHAN_W * 2) + $G_Total_DrawArea_W)"/></xsl:when>
<xsl:when test="($pside_ = 'N')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)))"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="py_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_PRTCHAN_H + ($BLKD_IORCHAN_H * 2) + $G_Total_DrawArea_H)"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
<xsl:when test="($pside_ = 'N')"><xsl:value-of select="($BLKD_PRTCHAN_H - $BLKD_IOP_H)"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="prot_">
<xsl:choose>
<xsl:when test="(($pside_ = 'W') and ($pdir_ = 'I'))">0</xsl:when>
<xsl:when test="(($pside_ = 'S') and ($pdir_ = 'I'))">-90</xsl:when>
<xsl:when test="(($pside_ = 'E') and ($pdir_ = 'I'))">180</xsl:when>
<xsl:when test="(($pside_ = 'N') and ($pdir_ = 'I'))">90</xsl:when>
<xsl:when test="(($pside_ = 'W') and ($pdir_ = 'O'))">180</xsl:when>
<xsl:when test="(($pside_ = 'S') and ($pdir_ = 'O'))">90</xsl:when>
<xsl:when test="(($pside_ = 'E') and ($pdir_ = 'O'))">0</xsl:when>
<xsl:when test="(($pside_ = 'N') and ($pdir_ = 'O'))">-90</xsl:when>
<xsl:when test="(($pside_ = 'W') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:when test="(($pside_ = 'S') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:when test="(($pside_ = 'E') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:when test="(($pside_ = 'N') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="txo_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')">-10</xsl:when>
<xsl:when test="($pside_ = 'S')">6</xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="(($BLKD_IOP_W * 2) - 4)"/></xsl:when>
<xsl:when test="($pside_ = 'N')">6</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="tyo_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_IOP_H * 2) + 4"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
<xsl:when test="($pside_ = 'N')">-2</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$pdir_ = 'B'">
<use x="{$px_}"
y="{$py_}"
id="{@NAME}"
xlink:href="#G_BIPort"
transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
</xsl:if>
<xsl:if test="(($pside_ = 'S') and not($pdir_ = 'B'))">
<rect
x="{$px_}"
y="{$py_}"
width= "{$BLKD_IOP_W}"
height="{$BLKD_IOP_H}" style="stroke:{$COL_IORING}; stroke-width:1"/>
</xsl:if>
<xsl:if test="not($pdir_ = 'B')">
<use x="{$px_}"
y="{$py_}"
id="{@NAME}"
xlink:href="#G_IOPort"
transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
</xsl:if>
<text class="iopnumb"
x="{$px_ + $txo_}"
y="{$py_ + $tyo_}">
<xsl:value-of select="@INDEX"/><tspan class="iopgrp"><xsl:value-of select="@GROUP"/></tspan>
</text>
</xsl:for-each>
</xsl:template>
<xsl:template name="Draw_IOPorts_4Sides">
<xsl:variable name="ports_count_" select="count($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)"/>
<xsl:variable name="ports_per_side_" select="ceiling($ports_count_ div 4)"/>
<xsl:variable name="h_ofs_">
<xsl:value-of select="$BLKD_PRTCHAN_W + ceiling(($G_Total_DrawArea_W - (($ports_per_side_ * $BLKD_IOP_W) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
</xsl:variable>
<xsl:variable name="v_ofs_">
<xsl:value-of select="$BLKD_PRTCHAN_H + ceiling(($G_Total_DrawArea_H - (($ports_per_side_ * $BLKD_IOP_H) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
</xsl:variable>
<xsl:for-each select="$G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT">
<xsl:sort data-type="number" select="@INDEX" order="ascending"/>
<xsl:variable name="poffset_" select="0"/>
<xsl:variable name="pcount_" select="$poffset_ + (position() -1)"/>
<xsl:variable name="pdir_">
<xsl:choose>
<xsl:when test="(@DIR='I' or @DIR='IN' or @DIR='INPUT')">I</xsl:when>
<xsl:when test="(@DIR='O' or @DIR='OUT' or @DIR='OUTPUT')">O</xsl:when>
<xsl:when test="(@DIR='IO' or @DIR='INOUT')">B</xsl:when>
<xsl:otherwise>I</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pside_">
<xsl:choose>
<xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 0) and ($pcount_ &lt; ($ports_per_side_ * 1)))">W</xsl:when>
<xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 1) and ($pcount_ &lt; ($ports_per_side_ * 2)))">S</xsl:when>
<xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 2) and ($pcount_ &lt; ($ports_per_side_ * 3)))">E</xsl:when>
<xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 3) and ($pcount_ &lt; ($ports_per_side_ * 4)))">N</xsl:when>
<xsl:otherwise>D</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pdec_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="($ports_per_side_ * 0)"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($ports_per_side_ * 1)"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="($ports_per_side_ * 2)"/></xsl:when>
<xsl:when test="($pside_ = 'N')"><xsl:value-of select="($ports_per_side_ * 3)"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="px_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="($BLKD_PRTCHAN_W - $BLKD_IOP_W)"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)) - 2)"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="($BLKD_PRTCHAN_W + ($BLKD_IORCHAN_W * 2) + $G_Total_DrawArea_W)"/></xsl:when>
<xsl:when test="($pside_ = 'N')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)))"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="py_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_PRTCHAN_H + ($BLKD_IORCHAN_H * 2) + $G_Total_DrawArea_H)"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
<xsl:when test="($pside_ = 'N')"><xsl:value-of select="($BLKD_PRTCHAN_H - $BLKD_IOP_H)"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="prot_">
<xsl:choose>
<xsl:when test="(($pside_ = 'W') and ($pdir_ = 'I'))">0</xsl:when>
<xsl:when test="(($pside_ = 'S') and ($pdir_ = 'I'))">-90</xsl:when>
<xsl:when test="(($pside_ = 'E') and ($pdir_ = 'I'))">180</xsl:when>
<xsl:when test="(($pside_ = 'N') and ($pdir_ = 'I'))">90</xsl:when>
<xsl:when test="(($pside_ = 'W') and ($pdir_ = 'O'))">180</xsl:when>
<xsl:when test="(($pside_ = 'S') and ($pdir_ = 'O'))">90</xsl:when>
<xsl:when test="(($pside_ = 'E') and ($pdir_ = 'O'))">0</xsl:when>
<xsl:when test="(($pside_ = 'N') and ($pdir_ = 'O'))">-90</xsl:when>
<xsl:when test="(($pside_ = 'W') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:when test="(($pside_ = 'S') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:when test="(($pside_ = 'E') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:when test="(($pside_ = 'N') and ($pdir_ = 'B'))">0</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="txo_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')">-14</xsl:when>
<xsl:when test="($pside_ = 'S')">8</xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="(($BLKD_IOP_W * 2) - 4)"/></xsl:when>
<xsl:when test="($pside_ = 'N')">8</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="tyo_">
<xsl:choose>
<xsl:when test="($pside_ = 'W')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
<xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_IOP_H * 2) + 4"/></xsl:when>
<xsl:when test="($pside_ = 'E')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
<xsl:when test="($pside_ = 'N')">-2</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$pdir_ = 'B'">
<use x="{$px_}"
y="{$py_}"
id="{@NAME}"
xlink:href="#G_BIPort"
transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
</xsl:if>
<xsl:if test="(($pside_ = 'S') and not($pdir_ = 'B'))">
<rect
x="{$px_}"
y="{$py_}"
width= "{$BLKD_IOP_W}"
height="{$BLKD_IOP_H}" style="stroke:{$COL_IORING}; stroke-width:1"/>
</xsl:if>
<xsl:if test="not($pdir_ = 'B')">
<use x="{$px_}"
y="{$py_}"
id="{@NAME}"
xlink:href="#G_IOPort"
transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
</xsl:if>
<text class="iopnumb"
x="{$px_ + $txo_}"
y="{$py_ + $tyo_}"><xsl:value-of select="@INDEX"/><tspan class="iopgrp"><xsl:value-of select="@GROUP"/></tspan>
</text>
</xsl:for-each>
</xsl:template>
<xsl:template name="Define_ExtPortsTable">
<!--
<xsl:if test="$oriented_= 'WEST'"><xsl:value-of select="$proc2procX_ - (string-length(@BUSNAME) * 6)"/></xsl:if>
<xsl:variable name="max_name_" select="math:max(string-length($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT/@NAME))"/>
<xsl:variable name="max_sgnm_" select="math:max(string-length($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT/@SIGNAME))"/>
<xsl:message>MAX NAME <xsl:value-of select="$max_name_"/></xsl:message>
<xsl:message>MAX SIG <xsl:value-of select="$max_sgnm_"/></xsl:message>
-->
<xsl:variable name="ext_ports_">
<xsl:if test="not($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)">
<EXTPORT NAME="__none__" SIGNAME="__none_" NAMELEN="0" SIGLEN="0"/>
</xsl:if>
<xsl:if test="$G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT">
<xsl:for-each select="$G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT">
<EXTPORT NAME="{@NAME}" SIGNAME="{@SIGNAME}" NAMELEN="{string-length(@NAME)}" SIGLEN="{string-length(@SIGNAME)}"/>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:variable name="max_name_" select="math:max(exsl:node-set($ext_ports_)/EXTPORT/@NAMELEN)"/>
<xsl:variable name="max_sign_" select="math:max(exsl:node-set($ext_ports_)/EXTPORT/@SIGLEN)"/>
<xsl:variable name="h_font_" select="12"/>
<xsl:variable name="w_font_" select="12"/>
<xsl:variable name="w_num_" select="($w_font_ * 5)"/>
<xsl:variable name="w_dir_" select="($w_font_ * 3)"/>
<xsl:variable name="w_lsbmsb_" select="($w_font_ * 9)"/>
<xsl:variable name="w_attr_" select="($w_font_ * 4)"/>
<xsl:variable name="w_name_" select="($w_font_ * $max_name_)"/>
<xsl:variable name="w_sign_" select="($w_font_ * $max_sign_)"/>
<xsl:variable name="w_table_" select="($w_num_ + $w_name_ + $w_dir_ + $w_sign_ + $w_attr_)"/>
<!--
<xsl:message>MAX NAME <xsl:value-of select="$max_name_"/></xsl:message>
<xsl:message>MAX SIG <xsl:value-of select="$max_sign_"/></xsl:message>
<xsl:message>W NUM <xsl:value-of select="$w_num_"/></xsl:message>
<xsl:message>W DIR <xsl:value-of select="$w_dir_"/></xsl:message>
<xsl:message>W NAM <xsl:value-of select="$w_name_"/></xsl:message>
<xsl:message>W SIG <xsl:value-of select="$w_sign_"/></xsl:message>
<xsl:message>W ATT <xsl:value-of select="$w_attr_"/></xsl:message>
<xsl:message>W TABLE <xsl:value-of select="$w_table_"/></xsl:message>
-->
<g id="BlkDiagram_ExtPortsTable">
<rect
x="0"
y="0"
width= "{$w_table_}"
height="{$h_font_}" style="fill:{$COL_RED}; stroke:none; stroke-width:1"/>
</g>
</xsl:template>
<!-- ======================= END MAIN BLOCK =========================== -->
</xsl:stylesheet>

View File

@ -1,465 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
<xsl:output method="xml"
version="1.0"
encoding="UTF-8"
indent="yes"
doctype-public="-//W3C//DTD SVG Tiny 1.1//EN"
doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd"/>
-->
<!-- ======================= DEF BLOCK =================================== -->
<xsl:template name="Define_AllStacks">
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@EAST &lt; $G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)]">
<xsl:call-template name="Define_Stack">
<xsl:with-param name="iStackIdx" select="@EAST"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="Define_Stack">
<xsl:param name="iStackIdx" select="100"/>
<!-- Define the stack's peripheral shapes-->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and not(@MODCLASS = 'MEMORY_UNIT'))]">
<xsl:for-each select="MODULE">
<xsl:variable name="modInst_" select="@INSTANCE"/>
<xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
<xsl:call-template name="Define_Peripheral">
<xsl:with-param name="iModInst" select="$modInst_"/>
<xsl:with-param name="iModType" select="$modType_"/>
<xsl:with-param name="iShapeId" select="../@SHAPE_ID"/>
<xsl:with-param name="iHorizIdx" select="../@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="../@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:for-each>
</xsl:for-each>
<!-- Define the stack's memory shapes-->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS='MEMORY_UNIT'))]">
<xsl:call-template name="Define_MemoryUnit">
<xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
</xsl:call-template>
</xsl:for-each>
<!-- Define the stack's processors-->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[@INSTANCE and @BIFS_W and @BIFS_H and (@STACK_HORIZ_INDEX = $iStackIdx)]">
<xsl:call-template name="Define_Processor"/>
</xsl:for-each>
<!-- Make an inventory of all the things in this processor's stack -->
<xsl:variable name="pstackW_">
<xsl:call-template name="F_Calc_Stack_Width">
<xsl:with-param name="iStackIdx" select="$iStackIdx"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="pstackH_">
<xsl:call-template name="F_Calc_Stack_Height">
<xsl:with-param name="iStackIdx" select="$iStackIdx"/>
</xsl:call-template>
</xsl:variable>
<!--
<xsl:message>Proc Stack Height <xsl:value-of select="$pstackH_"/></xsl:message>
<xsl:message>Proc Stack Height <xsl:value-of select="$pstackH_"/></xsl:message>
-->
<xsl:variable name="procW_" select="$BLKD_MOD_W"/>
<xsl:variable name="procX_" select="(ceiling($pstackW_ div 2) - ceiling($procW_ div 2))"/>
<xsl:variable name="sbsGap_" select="($BLKD_PROC2SBS_GAP + $G_Total_SharedBus_H)"/>
<xsl:variable name="stack_name_">
<xsl:call-template name="F_generate_Stack_Name">
<xsl:with-param name="iHorizIdx" select="$iStackIdx"/>
</xsl:call-template>
</xsl:variable>
<!--
<xsl:message>Horiz index<xsl:value-of select="$stackIdx"/></xsl:message>
<xsl:message>Drawing stack <xsl:value-of select="$stack_name_"/></xsl:message>
-->
<!-- Now use all this stuff to draw the stack-->
<g id="{$stack_name_}">
<rect x="0"
y="0"
rx="6"
ry="6"
width = "{$pstackW_}"
height= "{$pstackH_}"
style="fill:{$COL_BG}; stroke:none;"/>
<!-- First draw the the processor's peripherals-->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@STACK_HORIZ_INDEX = $iStackIdx)]">
<xsl:sort select="@STACK_VERTI_INDEX" data-type="number"/>
<xsl:variable name="shapeW_" select="(@MODS_W * $BLKD_MOD_W)"/>
<xsl:variable name="shapeX_" select="(ceiling($pstackW_ div 2) - ceiling($shapeW_ div 2))"/>
<xsl:variable name="stack_SymName_">
<xsl:call-template name="F_generate_Stack_SymbolName">
<xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:variable>
<!--
<xsl:message>Drawing stack peripheral <xsl:value-of select="$stack_SymName_"/></xsl:message>
-->
<xsl:variable name="shapeY_">
<xsl:call-template name="F_Calc_Stack_Shape_Y">
<xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:variable>
<use x="{$shapeX_}" y="{$shapeY_}" xlink:href="#{$stack_SymName_}"/>
</xsl:for-each>
<!-- Then draw the slave buckets for the shared busses that this processor is master to -->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]">
<xsl:sort select="@SHAPE_VERTI_INDEX" data-type="number"/>
<xsl:variable name="bucketW_" select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
<xsl:variable name="bucketX_" select="(ceiling($pstackW_ div 2) - ceiling($bucketW_ div 2))"/>
<xsl:variable name="bucketY_">
<xsl:call-template name="F_Calc_Stack_Shape_Y">
<xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:variable>
<!--
<xsl:message>SBS Bucket Y <xsl:value-of select="$bucketY_"/></xsl:message>
-->
<use x="{$bucketX_}" y="{$bucketY_}" xlink:href="#sbsbucket_{@BUSNAME}"/>
<xsl:variable name="slavesOfTxt_">SLAVES OF <xsl:value-of select="@BUSNAME"/></xsl:variable>
<!--
<text class="bkt_label"
x="{$bucketX_}"
y="{$bucketY_ - 4}"><xsl:value-of select="$slavesOfTxt_"/></text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="$bucketX_"/>
<xsl:with-param name="iY" select="($bucketY_ - 4)"/>
<xsl:with-param name="iText" select="$slavesOfTxt_"/>
<xsl:with-param name="iClass" select="'bkt_label'"/>
</xsl:call-template>
</xsl:for-each>
<!-- Then draw the the processor itself -->
<xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]">
<xsl:sort select="@SHAPE_VERTI_INDEX" data-type="number"/>
<xsl:variable name="procY_">
<xsl:call-template name="F_Calc_Stack_Shape_Y">
<xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="stack_SymName_">
<xsl:call-template name="F_generate_Stack_SymbolName">
<xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:variable>
<use x="{$procX_}" y="{$procY_}" xlink:href="#{$stack_SymName_}"/>
<!--
<xsl:if test = "not(@IS_LIKEPROC)">
<text class="ipclass_label"
x="{$procX_}"
y="{$procY_ - 4}">PROCESSOR</text>
</xsl:if>
<xsl:if test = "@IS_LIKEPROC = 'TRUE'">
<text class="ipclass_label"
x="{$procX_}"
y="{$procY_ - 4}">USER MODULE</text>
</xsl:if>
-->
<xsl:if test = "not(@IS_LIKEPROC)">
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="$procX_"/>
<xsl:with-param name="iY" select="($procY_ - 4)"/>
<xsl:with-param name="iText" select="'PROCESSOR'"/>
<xsl:with-param name="iClass" select="'ipclass_label'"/>
</xsl:call-template>
</xsl:if>
<xsl:if test = "@IS_LIKEPROC = 'TRUE'">
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="$procX_"/>
<xsl:with-param name="iY" select="($procY_ - 4)"/>
<xsl:with-param name="iText" select="'USER MODULE'"/>
<xsl:with-param name="iClass" select="'ipclass_label'"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</g>
</xsl:template>
<xsl:template name="Define_Processor">
<xsl:param name="iProcInst" select="@INSTANCE"/>
<xsl:param name="iModType" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@MODTYPE"/>
<xsl:variable name="label_y_">
<xsl:value-of select="$BLKD_MOD_LANE_H"/>
</xsl:variable>
<!--
<xsl:message>The proctype is <xsl:value-of select="$procType"/></xsl:message>
-->
<xsl:variable name="procH_" select="(($BLKD_MOD_LANE_H * 2) + (($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIFS_H) + ($BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
<xsl:variable name="procW_" select="(($BLKD_MOD_LANE_W * 2) + (($BLKD_BIF_W * @BIFS_W) + $BLKD_MOD_BIF_GAP_H))"/>
<xsl:variable name="procColor_">
<xsl:choose>
<xsl:when test="contains($iModType,'microblaze')"><xsl:value-of select="$COL_PROC_BG_MB"/></xsl:when>
<xsl:when test="contains($iModType,'ppc')"><xsl:value-of select="$COL_PROC_BG_PP"/></xsl:when>
<xsl:otherwise>
<xsl:value-of select="$COL_PROC_BG_USR"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--
<xsl:message>The proc color is <xsl:value-of select="$procColor"/></xsl:message>
-->
<xsl:variable name="procName_">
<xsl:call-template name="F_generate_Stack_SymbolName">
<xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
<xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
</xsl:call-template>
</xsl:variable>
<!--
<xsl:message>The proc name is <xsl:value-of select="$procName_"/></xsl:message>
-->
<g id="{$procName_}">
<rect x="0"
y="0"
rx="6"
ry="6"
width = "{$procW_}"
height= "{$procH_}"
style="fill:{$procColor_}; stroke:{$COL_WHITE}; stroke-width:2"/>
<rect x="{ceiling($procW_ div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
y="{$BLKD_MOD_LANE_H}"
rx="3"
ry="3"
width= "{$BLKD_MOD_LABEL_W}"
height="{$BLKD_MOD_LABEL_H}"
style="fill:{$COL_WHITE}; stroke:none;"/>
<!--
<text class="bciptype"
x="{ceiling($procW_ div 2)}"
y="{$BLKD_MOD_LANE_H + 8}">
<xsl:value-of select="$iModType"/>
</text>
<text class="bciplabel"
x="{ceiling($procW_ div 2)}"
y="{$BLKD_MOD_LANE_H + 16}">
<xsl:value-of select="$iProcInst"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="ceiling($procW_ div 2)"/>
<xsl:with-param name="iY" select="($BLKD_MOD_LANE_H + 8)"/>
<xsl:with-param name="iText" select="$iModType"/>
<xsl:with-param name="iClass" select="'bc_iptype'"/>
</xsl:call-template>
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="ceiling($procW_ div 2)"/>
<xsl:with-param name="iY" select="($BLKD_MOD_LANE_H + 16)"/>
<xsl:with-param name="iText" select="$iProcInst"/>
<xsl:with-param name="iClass" select="'bc_ipinst'"/>
</xsl:call-template>
<xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@GROUP">
<rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
y="{$BLKD_MOD_LANE_H + $BIF_H + ceiling($BLKD_BIF_H div 3) - 2}"
rx="3"
ry="3"
width= "{$BLKD_MOD_LABEL_W}"
height="{$BLKD_BIF_H}"
style="fill:{$COL_IORING_LT}; stroke:none;"/>
<!--
<text class="ioplblgrp"
x="{ceiling($BLKD_MOD_W div 2)}"
y="{$BLKD_MOD_LANE_H + $BIF_H + ceiling($BIF_H div 3) + 12}">
<xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@GROUP"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="ceiling($BLKD_MOD_W div 2)"/>
<xsl:with-param name="iY" select="($BLKD_MOD_LANE_H + $BIF_H + ceiling($BIF_H div 3) + 12)"/>
<xsl:with-param name="iText" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@GROUP"/>
<xsl:with-param name="iClass" select="'iogrp_label'"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/BUSINTERFACE[(@BIF_X and @BIF_Y)]">
<xsl:variable name="bifBusStd_">
<xsl:choose>
<xsl:when test="@BUSSTD">
<xsl:value-of select="@BUSSTD"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'TRS'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="bifBusColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$bifBusStd_"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="bifName_">
<xsl:choose>
<xsl:when test="string-length(@NAME) &lt;= 5">
<xsl:value-of select="@NAME"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(@NAME,0,5)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="bif_x_" select="(( $BLKD_BIF_W * @BIF_X) + ($BLKD_MOD_BIF_GAP_H * @BIF_X) + ($BLKD_MOD_LANE_W * 1))"/>
<xsl:variable name="bif_y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
<xsl:variable name="horz_line_y_" select="($bif_y_ + ceiling($BLKD_BIFC_H div 2))"/>
<xsl:variable name="horz_line_x1_">
<xsl:choose>
<xsl:when test="@BIF_X = '0'">0</xsl:when>
<xsl:otherwise><xsl:value-of select="($BLKD_MOD_W - $BLKD_MOD_LANE_W)"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="horz_line_x2_">
<xsl:choose>
<xsl:when test="@BIF_X = '0'"><xsl:value-of select="$BLKD_MOD_LANE_W"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$BLKD_MOD_W + 1"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<line x1="{$horz_line_x1_}"
y1="{$horz_line_y_ - 2}"
x2="{$horz_line_x2_}"
y2="{$horz_line_y_ - 2}"
style="stroke:{$bifBusColor_};stroke-width:1"/>
<use x="{$bif_x_}" y="{$bif_y_}" xlink:href="#{$bifBusStd_}_BifLabel"/>
<!--
<text class="bif_label"
x="{$bif_x_ + ceiling($BIF_W div 2)}"
y="{$bif_y_ + ceiling($BIF_H div 2) + 3}">
<xsl:value-of select="$bifName_"/>
</text>
-->
<xsl:call-template name="F_WriteText">
<xsl:with-param name="iX" select="($bif_x_ + ceiling($BIF_W div 2))"/>
<xsl:with-param name="iY" select="($bif_y_ + ceiling($BIF_H div 2) + 3)"/>
<xsl:with-param name="iText" select="$bifName_"/>
<xsl:with-param name="iClass" select="'bif_label'"/>
</xsl:call-template>
</xsl:for-each>
<xsl:variable name="intcIdx_">
<xsl:choose>
<xsl:when test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/INTERRUPTINFO/@INTC_INDEX">
<xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/INTERRUPTINFO/@INTC_INDEX"/>
</xsl:when>
<xsl:otherwise>"_no_interrupt_cntlr_"</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--
<xsl:message> The intc index should <xsl:value-of select="$interrupt_cntlr_"/></xsl:message>
<xsl:message> The intc index is <xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/@INTC_INDEX"/></xsl:message>
-->
<xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(INTERRUPTINFO[(@INTC_INDEX = $intcIdx_)])]">
<xsl:variable name="intrColor_">
<xsl:call-template name="F_IntcIdx2RGB">
<xsl:with-param name="iIntcIdx" select="$intcIdx_"/>
<!--
<xsl:with-param name="iIntcIdx" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/INTERRUPTINFO/@INTC_INDEX"/>
-->
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="F_draw_InterruptedProc">
<xsl:with-param name="iIntr_X" select="($BLKD_MOD_W - ceiling($BLKD_INTR_W div 2))"/>
<xsl:with-param name="iIntr_Y" select="3"/>
<xsl:with-param name="iIntr_COL" select="$intrColor_"/>
<xsl:with-param name="iIntr_IDX" select="$intcIdx_"/>
</xsl:call-template>
</xsl:if>
</g>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,271 +0,0 @@
<?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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
doctype-public="-//W3C//DTD SVG 1.0//EN"
doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
-->
<!-- ======================= DEF BLOCK =================================== -->
<xsl:template name="Define_ConnectedBifTypes">
<xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR">
<xsl:variable name="busStd_" select="@BUSSTD"/>
<xsl:variable name="psfStd_" select="@BUSSTD_PSF"/>
<xsl:for-each select="$G_SYS_MODS">
<xsl:variable name="bif_by_busStd_" select="key('G_MAP_ALL_BIFS',$busStd_)[((@IS_INSTANTIATED = 'TRUE') or (@IS_INMHS = 'TRUE'))]"/>
<xsl:variable name="num_of_busStd_" select="count($bif_by_busStd_)"/>
<xsl:variable name="bif_by_psfStd_" select="key('G_MAP_ALL_BIFS',$psfStd_)[((@IS_INSTANTIATED = 'TRUE') or (@IS_INMHS = 'TRUE'))]"/>
<xsl:variable name="num_of_psfStd_" select="count($bif_by_psfStd_)"/>
<!--
<xsl:message>DEBUG : <xsl:value-of select="$busStd_"/> : <xsl:value-of select="$num_of_busStd_"/> : <xsl:value-of select="$num_of_psfStd_"/></xsl:message>
<xsl:variable name="bif_by_busStd_" select="key('G_MAP_ALL_BIFS',$busStd_)[(@IS_INSTANTIATED = 'TRUE')]"/>
<xsl:variable name="num_of_busStd_" select="count($bif_by_busStd_)"/>
-->
<xsl:if test="(($num_of_busStd_ &gt; 0) or ($num_of_psfStd_ &gt; 0))">
<xsl:if test="($num_of_busStd_ &gt; 0)">
<xsl:call-template name="Define_BifLabel">
<xsl:with-param name="iBusStd" select="$busStd_"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="($num_of_psfStd_ &gt; 0)">
<xsl:call-template name="Define_BifLabel">
<xsl:with-param name="iBusStd" select="$psfStd_"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="exsl:node-set($G_BIFTYPES)/BIFTYPE">
<xsl:variable name="bifType_" select="@TYPE"/>
<xsl:variable name="num_of_bifType_" select="count($bif_by_busStd_[(@TYPE = $bifType_)])"/>
<!--
<xsl:message>DEBUG : <xsl:value-of select="$bifType_"/> : <xsl:value-of select="$num_of_bifType_"/></xsl:message>
-->
<xsl:if test="($num_of_bifType_ &gt; 0)">
<xsl:if test="($num_of_busStd_ &gt; 0)">
<xsl:call-template name="Define_BifTypeConnector">
<xsl:with-param name="iBusStd" select="$busStd_"/>
<xsl:with-param name="iBifType" select="$bifType_"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="($num_of_psfStd_ &gt; 0)">
<xsl:call-template name="Define_BifTypeConnector">
<xsl:with-param name="iBusStd" select="$busStd_"/>
<xsl:with-param name="iBifType" select="$bifType_"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
<xsl:call-template name="Define_BifLabel">
<xsl:with-param name="iBusStd" select="'KEY'"/>
</xsl:call-template>
<xsl:for-each select="exsl:node-set($G_BIFTYPES)/BIFTYPE">
<xsl:variable name="bifType_" select="@TYPE"/>
<xsl:call-template name="Define_BifTypeConnector">
<xsl:with-param name="iBusStd" select="'KEY'"/>
<xsl:with-param name="iBifType" select="$bifType_"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="Define_BifLabel">
<xsl:param name="iBusStd" select="'USER'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<g id="{$iBusStd}_BifLabel">
<rect x="0"
y="0"
rx="3"
ry="3"
width= "{$BIF_W}"
height="{$BIF_H}"
style="fill:{$busStdColor_}; stroke:black; stroke-width:1"/>
</g>
</xsl:template>
<xsl:template name="Define_BifTypeConnector">
<xsl:param name="iBusStd" select="'USER'"/>
<xsl:param name="iBifType" select="'USER'"/>
<xsl:variable name="busStdColor_">
<xsl:call-template name="F_BusStd2RGB">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="busStdColor_lt_">
<xsl:call-template name="F_BusStd2RGB_LT">
<xsl:with-param name="iBusStd" select="$iBusStd"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="bifc_wi_" select="ceiling($BIFC_W div 3)"/>
<xsl:variable name="bifc_hi_" select="ceiling($BIFC_H div 3)"/>
<xsl:choose>
<xsl:when test="$iBifType = 'SLAVE'">
<g id="{$iBusStd}_busconn_{$iBifType}">
<circle
cx="{ceiling($BIFC_W div 2)}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_W div 2)}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<circle
cx="{ceiling($BIFC_W div 2) + 0.5}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_Wi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:when test="$iBifType = 'MASTER'">
<g id="{$iBusStd}_busconn_{$iBifType}">
<rect x="0"
y="0"
width= "{$BIFC_W}"
height="{$BIFC_H}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<rect x="{$BIFC_dx + 0.5}"
y="{$BIFC_dy}"
width= "{$BIFC_Wi}"
height="{$BIFC_Hi}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:when test="$iBifType = 'INITIATOR'">
<g id="{$iBusStd}_busconn_{$iBifType}">
<rect x="0"
y="0"
width= "{$BIFC_W}"
height="{$BIFC_H}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<rect x="{$BIFC_dx + 0.5}"
y="{$BIFC_dy}"
width= "{$BIFC_Wi}"
height="{$BIFC_Hi}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:when test="$iBifType = 'TARGET'">
<g id="{$iBusStd}_busconn_{$iBifType}">
<circle
cx="{ceiling($BIFC_W div 2)}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_W div 2)}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<circle
cx="{ceiling($BIFC_W div 2) + 0.5}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_Wi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:when test="$iBifType = 'MASTER_SLAVE'">
<g id="{$iBusStd}_busconn_{$iBifType}">
<circle
cx="{ceiling($BIFC_W div 2)}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_W div 2)}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<circle
cx="{ceiling($BIFC_W div 2) + 0.5}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_Wi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
<rect
x="0"
y="{ceiling($BIFC_H div 2)}"
width= "{$BIFC_W}"
height="{ceiling($BIFC_H div 2)}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<rect
x="{$BIFC_dx + 0.5}"
y="{ceiling($BIFC_H div 2)}"
width= "{$BIFC_Wi}"
height="{ceiling($BIFC_Hi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:when test="$iBifType = 'MONITOR'">
<g id="{$iBusStd}_busconn_{$iBifType}">
<rect
x="0"
y="0.5"
width= "{$BIFC_W}"
height="{ceiling($BIFC_Hi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
<rect
x="0"
y="{ceiling($BIFC_H div 2) + 4}"
width= "{$BIFC_W}"
height="{ceiling($BIFC_Hi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:when test="$iBifType = 'USER'">
<g id="{$iBusStd}_busconn_USER">
<circle
cx="{ceiling($BIFC_W div 2)}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_W div 2)}"
style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/>
<circle
cx="{ceiling($BIFC_W div 2) + 0.5}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_Wi div 2)}"
style="fill:{$busStdColor_}; stroke:none;"/>
</g>
</xsl:when>
<xsl:otherwise>
<g id="{$iBusStd}_busconn_{$iBifType}">
<circle
cx="{ceiling($BIFC_W div 2)}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_W div 2)}"
style="fill:{$COL_WHITE}; stroke:{$busStdColor_}; stroke-width:1"/>
<circle
cx="{ceiling($BIFC_W div 2) + 0.5}"
cy="{ceiling($BIFC_H div 2)}"
r="{ceiling($BIFC_Wi div 2)}"
style="fill:{$COL_WHITE}; stroke:none;"/>
</g>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,173 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<Project NoOfControllers="1" >
<ModuleName>axi_s6_ddrx_0</ModuleName>
<TargetFPGA>xc6slx45t-fgg484/-2</TargetFPGA>
<Version>3.6</Version>
<Controller number="3" >
<MemoryDevice>DDR3_SDRAM/Components/MT41J256M8XX-187E</MemoryDevice>
<TimePeriod>3200</TimePeriod>
<EnableVoltageRange>0</EnableVoltageRange>
<DataMask>1</DataMask>
<CustomPart>FALSE</CustomPart>
<NewPartName/>
<RowAddress>15</RowAddress>
<ColAddress>10</ColAddress>
<BankAddress>3</BankAddress>
<TimingParameters>
<Parameters twtr="7.5" trefi="7.8" twr="15" trtp="7.5" trfc="160" trp="13.13" tras="37.5" trcd="13.13" />
</TimingParameters>
<mrBurstLength name="Burst Length" >8(00)</mrBurstLength>
<mrCasLatency name="CAS Latency" >6</mrCasLatency>
<emrDllEnable name="DLL Enable" >Enable</emrDllEnable>
<emrOutputDriveStrength name="Output Driver Impedance Control" >RZQ/6</emrOutputDriveStrength>
<emrRTT name="RTT (nominal) - ODT" >RZQ/4</emrRTT>
<emrPosted name="Additive Latency (AL)" >0</emrPosted>
<emrOCD name="Write Leveling Enable" >Disabled</emrOCD>
<emrDQS name="TDQS enable" >Disabled</emrDQS>
<mr2PartialArraySelfRefresh name="Partial-Array Self Refresh" >Full Array</mr2PartialArraySelfRefresh>
<mr2CasWriteLatency name="CAS write latency" >5</mr2CasWriteLatency>
<mr2AutoSelfRefresh name="Auto Self Refresh" >Enabled</mr2AutoSelfRefresh>
<mr2SelfRefreshTempRange name="High Temparature Self Refresh Rate" >Normal</mr2SelfRefreshTempRange>
<PortInterface>AXI,AXI,AXI,AXI,AXI,AXI</PortInterface>
<AXIParameters>
<C_INTERCONNECT_S0_AXI_AR_REGISTER>0</C_INTERCONNECT_S0_AXI_AR_REGISTER>
<C_INTERCONNECT_S0_AXI_AW_REGISTER>0</C_INTERCONNECT_S0_AXI_AW_REGISTER>
<C_INTERCONNECT_S0_AXI_B_REGISTER>0</C_INTERCONNECT_S0_AXI_B_REGISTER>
<C_INTERCONNECT_S0_AXI_MASTERS>microblaze_0.M_AXI_DC</C_INTERCONNECT_S0_AXI_MASTERS>
<C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE>4</C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE>
<C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH>0</C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH>
<C_INTERCONNECT_S0_AXI_R_REGISTER>1</C_INTERCONNECT_S0_AXI_R_REGISTER>
<C_INTERCONNECT_S0_AXI_SECURE>0</C_INTERCONNECT_S0_AXI_SECURE>
<C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE>4</C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE>
<C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH>0</C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH>
<C_INTERCONNECT_S0_AXI_W_REGISTER>1</C_INTERCONNECT_S0_AXI_W_REGISTER>
<C_INTERCONNECT_S1_AXI_AR_REGISTER>0</C_INTERCONNECT_S1_AXI_AR_REGISTER>
<C_INTERCONNECT_S1_AXI_AW_REGISTER>0</C_INTERCONNECT_S1_AXI_AW_REGISTER>
<C_INTERCONNECT_S1_AXI_B_REGISTER>0</C_INTERCONNECT_S1_AXI_B_REGISTER>
<C_INTERCONNECT_S1_AXI_MASTERS>microblaze_0.M_AXI_IC</C_INTERCONNECT_S1_AXI_MASTERS>
<C_INTERCONNECT_S1_AXI_READ_ACCEPTANCE>4</C_INTERCONNECT_S1_AXI_READ_ACCEPTANCE>
<C_INTERCONNECT_S1_AXI_READ_FIFO_DEPTH>0</C_INTERCONNECT_S1_AXI_READ_FIFO_DEPTH>
<C_INTERCONNECT_S1_AXI_R_REGISTER>1</C_INTERCONNECT_S1_AXI_R_REGISTER>
<C_INTERCONNECT_S1_AXI_SECURE>0</C_INTERCONNECT_S1_AXI_SECURE>
<C_INTERCONNECT_S1_AXI_WRITE_ACCEPTANCE>4</C_INTERCONNECT_S1_AXI_WRITE_ACCEPTANCE>
<C_INTERCONNECT_S1_AXI_WRITE_FIFO_DEPTH>0</C_INTERCONNECT_S1_AXI_WRITE_FIFO_DEPTH>
<C_INTERCONNECT_S1_AXI_W_REGISTER>0</C_INTERCONNECT_S1_AXI_W_REGISTER>
<C_INTERCONNECT_S2_AXI_AR_REGISTER>0</C_INTERCONNECT_S2_AXI_AR_REGISTER>
<C_INTERCONNECT_S2_AXI_AW_REGISTER>0</C_INTERCONNECT_S2_AXI_AW_REGISTER>
<C_INTERCONNECT_S2_AXI_B_REGISTER>0</C_INTERCONNECT_S2_AXI_B_REGISTER>
<C_INTERCONNECT_S2_AXI_MASTERS>none</C_INTERCONNECT_S2_AXI_MASTERS>
<C_INTERCONNECT_S2_AXI_READ_ACCEPTANCE>4</C_INTERCONNECT_S2_AXI_READ_ACCEPTANCE>
<C_INTERCONNECT_S2_AXI_READ_FIFO_DEPTH>0</C_INTERCONNECT_S2_AXI_READ_FIFO_DEPTH>
<C_INTERCONNECT_S2_AXI_R_REGISTER>0</C_INTERCONNECT_S2_AXI_R_REGISTER>
<C_INTERCONNECT_S2_AXI_SECURE>0</C_INTERCONNECT_S2_AXI_SECURE>
<C_INTERCONNECT_S2_AXI_WRITE_ACCEPTANCE>4</C_INTERCONNECT_S2_AXI_WRITE_ACCEPTANCE>
<C_INTERCONNECT_S2_AXI_WRITE_FIFO_DEPTH>0</C_INTERCONNECT_S2_AXI_WRITE_FIFO_DEPTH>
<C_INTERCONNECT_S2_AXI_W_REGISTER>0</C_INTERCONNECT_S2_AXI_W_REGISTER>
<C_INTERCONNECT_S3_AXI_AR_REGISTER>0</C_INTERCONNECT_S3_AXI_AR_REGISTER>
<C_INTERCONNECT_S3_AXI_AW_REGISTER>0</C_INTERCONNECT_S3_AXI_AW_REGISTER>
<C_INTERCONNECT_S3_AXI_B_REGISTER>0</C_INTERCONNECT_S3_AXI_B_REGISTER>
<C_INTERCONNECT_S3_AXI_MASTERS>none</C_INTERCONNECT_S3_AXI_MASTERS>
<C_INTERCONNECT_S3_AXI_READ_ACCEPTANCE>4</C_INTERCONNECT_S3_AXI_READ_ACCEPTANCE>
<C_INTERCONNECT_S3_AXI_READ_FIFO_DEPTH>0</C_INTERCONNECT_S3_AXI_READ_FIFO_DEPTH>
<C_INTERCONNECT_S3_AXI_R_REGISTER>0</C_INTERCONNECT_S3_AXI_R_REGISTER>
<C_INTERCONNECT_S3_AXI_SECURE>0</C_INTERCONNECT_S3_AXI_SECURE>
<C_INTERCONNECT_S3_AXI_WRITE_ACCEPTANCE>4</C_INTERCONNECT_S3_AXI_WRITE_ACCEPTANCE>
<C_INTERCONNECT_S3_AXI_WRITE_FIFO_DEPTH>0</C_INTERCONNECT_S3_AXI_WRITE_FIFO_DEPTH>
<C_INTERCONNECT_S3_AXI_W_REGISTER>0</C_INTERCONNECT_S3_AXI_W_REGISTER>
<C_INTERCONNECT_S4_AXI_AR_REGISTER>0</C_INTERCONNECT_S4_AXI_AR_REGISTER>
<C_INTERCONNECT_S4_AXI_AW_REGISTER>0</C_INTERCONNECT_S4_AXI_AW_REGISTER>
<C_INTERCONNECT_S4_AXI_B_REGISTER>0</C_INTERCONNECT_S4_AXI_B_REGISTER>
<C_INTERCONNECT_S4_AXI_MASTERS>none</C_INTERCONNECT_S4_AXI_MASTERS>
<C_INTERCONNECT_S4_AXI_READ_ACCEPTANCE>4</C_INTERCONNECT_S4_AXI_READ_ACCEPTANCE>
<C_INTERCONNECT_S4_AXI_READ_FIFO_DEPTH>0</C_INTERCONNECT_S4_AXI_READ_FIFO_DEPTH>
<C_INTERCONNECT_S4_AXI_R_REGISTER>0</C_INTERCONNECT_S4_AXI_R_REGISTER>
<C_INTERCONNECT_S4_AXI_SECURE>0</C_INTERCONNECT_S4_AXI_SECURE>
<C_INTERCONNECT_S4_AXI_WRITE_ACCEPTANCE>4</C_INTERCONNECT_S4_AXI_WRITE_ACCEPTANCE>
<C_INTERCONNECT_S4_AXI_WRITE_FIFO_DEPTH>0</C_INTERCONNECT_S4_AXI_WRITE_FIFO_DEPTH>
<C_INTERCONNECT_S4_AXI_W_REGISTER>0</C_INTERCONNECT_S4_AXI_W_REGISTER>
<C_INTERCONNECT_S5_AXI_AR_REGISTER>0</C_INTERCONNECT_S5_AXI_AR_REGISTER>
<C_INTERCONNECT_S5_AXI_AW_REGISTER>0</C_INTERCONNECT_S5_AXI_AW_REGISTER>
<C_INTERCONNECT_S5_AXI_B_REGISTER>0</C_INTERCONNECT_S5_AXI_B_REGISTER>
<C_INTERCONNECT_S5_AXI_MASTERS>none</C_INTERCONNECT_S5_AXI_MASTERS>
<C_INTERCONNECT_S5_AXI_READ_ACCEPTANCE>4</C_INTERCONNECT_S5_AXI_READ_ACCEPTANCE>
<C_INTERCONNECT_S5_AXI_READ_FIFO_DEPTH>0</C_INTERCONNECT_S5_AXI_READ_FIFO_DEPTH>
<C_INTERCONNECT_S5_AXI_R_REGISTER>0</C_INTERCONNECT_S5_AXI_R_REGISTER>
<C_INTERCONNECT_S5_AXI_SECURE>0</C_INTERCONNECT_S5_AXI_SECURE>
<C_INTERCONNECT_S5_AXI_WRITE_ACCEPTANCE>4</C_INTERCONNECT_S5_AXI_WRITE_ACCEPTANCE>
<C_INTERCONNECT_S5_AXI_WRITE_FIFO_DEPTH>0</C_INTERCONNECT_S5_AXI_WRITE_FIFO_DEPTH>
<C_INTERCONNECT_S5_AXI_W_REGISTER>0</C_INTERCONNECT_S5_AXI_W_REGISTER>
<C_S0_AXI_ADDR_WIDTH>32</C_S0_AXI_ADDR_WIDTH>
<C_S0_AXI_BASEADDR>0x80000000</C_S0_AXI_BASEADDR>
<C_S0_AXI_DATA_WIDTH>32</C_S0_AXI_DATA_WIDTH>
<C_S0_AXI_ENABLE_AP>0</C_S0_AXI_ENABLE_AP>
<C_S0_AXI_HIGHADDR>0x87FFFFFF</C_S0_AXI_HIGHADDR>
<C_S0_AXI_STRICT_COHERENCY>1</C_S0_AXI_STRICT_COHERENCY>
<C_S0_AXI_SUPPORTS_NARROW_BURST>Auto</C_S0_AXI_SUPPORTS_NARROW_BURST>
<C_S1_AXI_ADDR_WIDTH>32</C_S1_AXI_ADDR_WIDTH>
<C_S1_AXI_BASEADDR>0x80000000</C_S1_AXI_BASEADDR>
<C_S1_AXI_DATA_WIDTH>32</C_S1_AXI_DATA_WIDTH>
<C_S1_AXI_ENABLE_AP>0</C_S1_AXI_ENABLE_AP>
<C_S1_AXI_HIGHADDR>0x87FFFFFF</C_S1_AXI_HIGHADDR>
<C_S1_AXI_STRICT_COHERENCY>1</C_S1_AXI_STRICT_COHERENCY>
<C_S1_AXI_SUPPORTS_NARROW_BURST>Auto</C_S1_AXI_SUPPORTS_NARROW_BURST>
<C_S2_AXI_ADDR_WIDTH>32</C_S2_AXI_ADDR_WIDTH>
<C_S2_AXI_BASEADDR>0xffffffff</C_S2_AXI_BASEADDR>
<C_S2_AXI_DATA_WIDTH>32</C_S2_AXI_DATA_WIDTH>
<C_S2_AXI_ENABLE_AP>0</C_S2_AXI_ENABLE_AP>
<C_S2_AXI_HIGHADDR>0x00000000</C_S2_AXI_HIGHADDR>
<C_S2_AXI_STRICT_COHERENCY>0</C_S2_AXI_STRICT_COHERENCY>
<C_S2_AXI_SUPPORTS_NARROW_BURST>0</C_S2_AXI_SUPPORTS_NARROW_BURST>
<C_S3_AXI_ADDR_WIDTH>32</C_S3_AXI_ADDR_WIDTH>
<C_S3_AXI_BASEADDR>0xffffffff</C_S3_AXI_BASEADDR>
<C_S3_AXI_DATA_WIDTH>32</C_S3_AXI_DATA_WIDTH>
<C_S3_AXI_ENABLE_AP>0</C_S3_AXI_ENABLE_AP>
<C_S3_AXI_HIGHADDR>0x00000000</C_S3_AXI_HIGHADDR>
<C_S3_AXI_STRICT_COHERENCY>0</C_S3_AXI_STRICT_COHERENCY>
<C_S3_AXI_SUPPORTS_NARROW_BURST>0</C_S3_AXI_SUPPORTS_NARROW_BURST>
<C_S4_AXI_ADDR_WIDTH>32</C_S4_AXI_ADDR_WIDTH>
<C_S4_AXI_BASEADDR>0xffffffff</C_S4_AXI_BASEADDR>
<C_S4_AXI_DATA_WIDTH>32</C_S4_AXI_DATA_WIDTH>
<C_S4_AXI_ENABLE_AP>0</C_S4_AXI_ENABLE_AP>
<C_S4_AXI_HIGHADDR>0x00000000</C_S4_AXI_HIGHADDR>
<C_S4_AXI_STRICT_COHERENCY>0</C_S4_AXI_STRICT_COHERENCY>
<C_S4_AXI_SUPPORTS_NARROW_BURST>0</C_S4_AXI_SUPPORTS_NARROW_BURST>
<C_S5_AXI_ADDR_WIDTH>32</C_S5_AXI_ADDR_WIDTH>
<C_S5_AXI_BASEADDR>0xffffffff</C_S5_AXI_BASEADDR>
<C_S5_AXI_DATA_WIDTH>32</C_S5_AXI_DATA_WIDTH>
<C_S5_AXI_ENABLE_AP>0</C_S5_AXI_ENABLE_AP>
<C_S5_AXI_HIGHADDR>0x00000000</C_S5_AXI_HIGHADDR>
<C_S5_AXI_STRICT_COHERENCY>0</C_S5_AXI_STRICT_COHERENCY>
<C_S5_AXI_SUPPORTS_NARROW_BURST>0</C_S5_AXI_SUPPORTS_NARROW_BURST>
</AXIParameters>
<Class>Class II</Class>
<DataClass>Class II</DataClass>
<InputPinTermination>CALIB_TERM</InputPinTermination>
<DataTermination>25 Ohms</DataTermination>
<CalibrationRowAddress/>
<CalibrationColumnAddress/>
<CalibrationBankAddress/>
<SystemClockBUFPLL>0</SystemClockBUFPLL>
<BypassCalibration>1</BypassCalibration>
<DebugSignals>Disable</DebugSignals>
<SystemClock>Differential</SystemClock>
<Configuration>Two 32-bit bi-directional and four 32-bit unidirectional ports</Configuration>
<RzqPin>K7</RzqPin>
<ZioPin>M7</ZioPin>
<PortsSelected>Port0,Port1,Port2,Port3,Port4,Port5</PortsSelected>
<PortDirections>Bi-directional,Read,Read,Read,Read,Read</PortDirections>
<UserMemoryAddressMap>ROW_BANK_COLUMN</UserMemoryAddressMap>
<ArbitrationAlgorithm>Round Robin</ArbitrationAlgorithm>
<TimeSlot0>012345</TimeSlot0>
<TimeSlot1>123450</TimeSlot1>
<TimeSlot2>234501</TimeSlot2>
<TimeSlot3>345012</TimeSlot3>
<TimeSlot4>450123</TimeSlot4>
<TimeSlot5>501234</TimeSlot5>
<TimeSlot6>012345</TimeSlot6>
<TimeSlot7>123450</TimeSlot7>
<TimeSlot8>234501</TimeSlot8>
<TimeSlot9>345012</TimeSlot9>
<TimeSlot10>450123</TimeSlot10>
<TimeSlot11>501234</TimeSlot11>
</Controller>
</Project>

View File

@ -1,159 +0,0 @@
############################################################################
##
## Xilinx, Inc. 2006 www.xilinx.com
## Sun 28. Aug 17:46:56 2011
## Generated by MIG Version 3.7
##
############################################################################
## File name : MCB_DDR3.ucf
##
## Details : Constraints file
## FPGA family: spartan6
## FPGA: xc6slx45t-fgg484
## Speedgrade: -3
## Design Entry: VERILOG
## Design: without Test bench
## DCM Used: Enable
## No.Of Memory Controllers: 1
##
############################################################################
############################################################################
# VCC AUX VOLTAGE
############################################################################
CONFIG VCCAUX=2.5; # Valid values are 2.5 and 3.3
############################################################################
# Extended MCB performance mode requires a different Vccint specification to
# achieve higher maximum frequencies for DDR2 and DDR3.Consult the Spartan-6
#datasheet (DS162) table 2 and 24 for more information
############################################################################
CONFIG MCB_PERFORMANCE= STANDARD;
##################################################################################
# Timing Ignore constraints for paths crossing the clock domain
##################################################################################
NET "memc?_wrapper_inst/mcb_ui_top_inst/mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG;
NET "c?_pll_lock" TIG;
############################################################################
## Memory Controller 3
## Memory Device: DDR3_SDRAM->MT41J64M16XX-187E
## Frequency: 400 MHz
## Time Period: 2500 ps
## Supported Part Numbers: MT41J64M16LA-187E
############################################################################
############################################################################
## Clock constraints
############################################################################
NET "memc3_infrastructure_inst/sys_clk_ibufg" TNM_NET = "SYS_CLK3";
TIMESPEC "TS_SYS_CLK3" = PERIOD "SYS_CLK3" 2.5 ns HIGH 50 %;
############################################################################
############################################################################
## I/O TERMINATION
############################################################################
NET "mcb3_dram_dq[*]" IN_TERM = NONE;
NET "mcb3_dram_dqs" IN_TERM = NONE;
NET "mcb3_dram_dqs_n" IN_TERM = NONE;
NET "mcb3_dram_udqs" IN_TERM = NONE;
NET "mcb3_dram_udqs_n" IN_TERM = NONE;
############################################################################
# I/O STANDARDS
############################################################################
NET "mcb3_dram_dq[*]" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_a[*]" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_ba[*]" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_dqs" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_udqs" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_dqs_n" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_udqs_n" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_ck" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_ck_n" IOSTANDARD = DIFF_SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_cke" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_ras_n" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_cas_n" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_we_n" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_odt" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_reset_n" IOSTANDARD = LVCMOS15 ;
NET "mcb3_dram_dm" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_dram_udm" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_rzq" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "mcb3_zio" IOSTANDARD = SSTL15_II | OUT_TERM = UNTUNED_50;
NET "c3_sys_clk_p" IOSTANDARD = LVDS_25 ;
NET "c3_sys_clk_n" IOSTANDARD = LVDS_25 ;
NET "c3_sys_rst_n" IOSTANDARD = LVCMOS15 ;
############################################################################
# MCB 3
# Pin Location Constraints for Clock, Masks, Address, and Controls
############################################################################
NET "mcb3_dram_a[0]" LOC = "K2" ;
NET "mcb3_dram_a[10]" LOC = "J4" ;
NET "mcb3_dram_a[11]" LOC = "E1" ;
NET "mcb3_dram_a[12]" LOC = "F1" ;
NET "mcb3_dram_a[1]" LOC = "K1" ;
NET "mcb3_dram_a[2]" LOC = "K5" ;
NET "mcb3_dram_a[3]" LOC = "M6" ;
NET "mcb3_dram_a[4]" LOC = "H3" ;
NET "mcb3_dram_a[5]" LOC = "M3" ;
NET "mcb3_dram_a[6]" LOC = "L4" ;
NET "mcb3_dram_a[7]" LOC = "K6" ;
NET "mcb3_dram_a[8]" LOC = "G3" ;
NET "mcb3_dram_a[9]" LOC = "G1" ;
NET "mcb3_dram_ba[0]" LOC = "J3" ;
NET "mcb3_dram_ba[1]" LOC = "J1" ;
NET "mcb3_dram_ba[2]" LOC = "H1" ;
NET "mcb3_dram_cas_n" LOC = "M4" ;
NET "mcb3_dram_ck" LOC = "K4" ;
NET "mcb3_dram_ck_n" LOC = "K3" ;
NET "mcb3_dram_cke" LOC = "F2" ;
NET "mcb3_dram_dm" LOC = "N4" ;
NET "mcb3_dram_dq[0]" LOC = "R3" ;
NET "mcb3_dram_dq[10]" LOC = "U3" ;
NET "mcb3_dram_dq[11]" LOC = "U1" ;
NET "mcb3_dram_dq[12]" LOC = "W3" ;
NET "mcb3_dram_dq[13]" LOC = "W1" ;
NET "mcb3_dram_dq[14]" LOC = "Y2" ;
NET "mcb3_dram_dq[15]" LOC = "Y1" ;
NET "mcb3_dram_dq[1]" LOC = "R1" ;
NET "mcb3_dram_dq[2]" LOC = "P2" ;
NET "mcb3_dram_dq[3]" LOC = "P1" ;
NET "mcb3_dram_dq[4]" LOC = "L3" ;
NET "mcb3_dram_dq[5]" LOC = "L1" ;
NET "mcb3_dram_dq[6]" LOC = "M2" ;
NET "mcb3_dram_dq[7]" LOC = "M1" ;
NET "mcb3_dram_dq[8]" LOC = "T2" ;
NET "mcb3_dram_dq[9]" LOC = "T1" ;
NET "mcb3_dram_dqs" LOC = "N3" ;
NET "mcb3_dram_dqs_n" LOC = "N1" ;
NET "mcb3_dram_odt" LOC = "L6" ;
NET "mcb3_dram_ras_n" LOC = "M5" ;
NET "mcb3_dram_reset_n" LOC = "E3" ;
NET "c3_sys_clk_n" LOC = "U12" ;
NET "c3_sys_clk_p" LOC = "T12" ;
NET "c3_sys_rst_n" LOC = "W12" ;
NET "mcb3_dram_udm" LOC = "P3" ;
NET "mcb3_dram_udqs" LOC = "V2" ;
NET "mcb3_dram_udqs_n" LOC = "V1" ;
NET "mcb3_dram_we_n" LOC = "H2" ;
##################################################################################
#RZQ is required for all MCB designs. Do not move the location #
#of this pin for ES devices.For production devices, RZQ can be moved to any #
#valid package pin within the MCB bank.For designs using Calibrated Input Termination, #
#a 2R resistor should be connected between RZQand ground, where R is the desired#
#input termination value. Otherwise, RZQ should be left as a no-connect (NC) pin.#
##################################################################################
NET "mcb3_rzq" LOC = "K7" ;
##################################################################################
#ZIO is only required for MCB designs using Calibrated Input Termination.#
#ZIO can be moved to any valid package pin (i.e. bonded IO) within the#
#MCB bank but must be left as a no-connect (NC) pin.#
##################################################################################
NET "mcb3_zio" LOC = "R7" ;

View File

@ -1,16 +0,0 @@
SET_FLAG FLOW SOCKETABLE
SET_FLAG MODE BATCH
SET_FLAG DRCMODE ERROR
SET_FLAG COMPONENT_NAME MCB_DDR3
SET_PREFERENCE projectname MCB_DDR3
SET_PREFERENCE devicefamily spartan6
SET_PREFERENCE devicesubfamily t
SET_PREFERENCE partname xc6slx45tfgg484-3
SET_PREFERENCE device xc6slx45t
SET_PREFERENCE package fgg484
SET_PREFERENCE speedgrade -3
SET_PREFERENCE outputdirectory ./
SET_PREFERENCE workingdirectory ./
SET_PREFERENCE subworkingdirectory ./
SET_PREFERENCE InputParamsFile param_input.xml
SET_PREFERENCE OutputParamsFile param_output.xml

View File

@ -1,4 +0,0 @@
SET_ERROR_CODE 0
SET_XMDF_PATH ./MCB_DDR3_xmdf.tcl
SET_PARAMETER component_name MCB_DDR3
SET_PARAMETER xml_input_file ./MCB_DDR3/user_design/mig.prj

View File

@ -1,953 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" xmlns:xilinx="http://www.xilinx.com">
<spirit:vendor/>
<spirit:library/>
<spirit:name/>
<spirit:version/>
<spirit:model>
<spirit:views/>
<spirit:ports/>
<spirit:modelParameters>
<spirit:modelParameter>
<spirit:name>C_ARB_ALGORITHM</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_ALGORITHM"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_NUM_TIME_SLOTS</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_NUM_TIME_SLOTS"> "12" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_0"> "0b000000000001010011" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_1"> "0b000000001010011000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_2</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_2"> "0b000000010011000001" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_3</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_3"> "0b000000011000001010" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_4</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_4"> "0b000000000001010011" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_5</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_5"> "0b000000001010011000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_6</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_6"> "0b000000010011000001" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_7</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_7"> "0b000000011000001010" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_8</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_8"> "0b000000000001010011" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_9</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_9"> "0b000000001010011000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_10</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_10"> "0b000000010011000001" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_11</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_ARB_TIME_SLOT_11"> "0b000000011000001010" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_BYPASS_CORE_UCF</spirit:name>
<spirit:value spirit:format="" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_BYPASS_CORE_UCF"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_ACLK_RATIO</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_ACLK_RATIO"> "100000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_AR_REGISTER"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_AW_REGISTER"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_B_REGISTER"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_IS_ACLK_ASYNC</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_IS_ACLK_ASYNC"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_MASTERS"> "microblaze_0.M_AXI_DC &amp; microblaze_0.M_AXI_IC &amp; ETHERNET_dma.M_AXI_SG &amp; ETHERNET_dma.M_AXI_MM2S &amp; ETHERNET_dma.M_AXI_S2MM" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_R_REGISTER"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_SECURE</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_SECURE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_W_REGISTER"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_ACLK_RATIO</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_ACLK_RATIO"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_AR_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_AW_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_B_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_IS_ACLK_ASYNC</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_IS_ACLK_ASYNC"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_MASTERS"> "none" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_R_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_READ_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_READ_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_SECURE</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_SECURE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_W_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_WRITE_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S1_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S1_AXI_WRITE_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_ACLK_RATIO</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_ACLK_RATIO"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_AR_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_AW_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_B_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_IS_ACLK_ASYNC</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_IS_ACLK_ASYNC"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_MASTERS"> "none" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_R_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_READ_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_READ_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_SECURE</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_SECURE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_W_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_WRITE_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S2_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S2_AXI_WRITE_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_ACLK_RATIO</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_ACLK_RATIO"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_AR_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_AW_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_B_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_IS_ACLK_ASYNC</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_IS_ACLK_ASYNC"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_MASTERS"> "none" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_R_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_READ_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_READ_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_SECURE</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_SECURE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_W_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_WRITE_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S3_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S3_AXI_WRITE_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_ACLK_RATIO</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_ACLK_RATIO"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_AR_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_AW_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_B_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_IS_ACLK_ASYNC</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_IS_ACLK_ASYNC"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_MASTERS"> "none" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_R_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_READ_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_READ_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_SECURE</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_SECURE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_W_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_WRITE_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S4_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S4_AXI_WRITE_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_ACLK_RATIO</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_ACLK_RATIO"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_AR_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_AW_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_B_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_IS_ACLK_ASYNC</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_IS_ACLK_ASYNC"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_MASTERS"> "none" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_R_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_READ_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_READ_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_SECURE</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_SECURE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_W_REGISTER"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_WRITE_ACCEPTANCE"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S5_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="integer" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_INTERCONNECT_S5_AXI_WRITE_FIFO_DEPTH"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_LOC</spirit:name>
<spirit:value spirit:format="" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MCB_LOC"> "MEMC3" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_PERFORMANCE</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MCB_PERFORMANCE"> "STANDARD" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_RZQ_LOC</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MCB_RZQ_LOC"> "K7" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_USE_EXTERNAL_BUFPLL</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MCB_USE_EXTERNAL_BUFPLL"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_ZIO_LOC</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MCB_ZIO_LOC"> "R7" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_ADDR_ORDER</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_ADDR_ORDER"> "ROW_BANK_COLUMN" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_ADDR_WIDTH"> "13" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_BANKADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_BANKADDR_WIDTH"> "3" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_BASEPARTNO</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_BASEPARTNO"> "" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_CAS_LATENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_MEM_CAS_LATENCY"> "6" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR1_2_ADDR_CONTROL_SSTL_ODS</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR1_2_ADDR_CONTROL_SSTL_ODS"> "CLASS_II" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR1_2_DATA_CONTROL_SSTL_ODS</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR1_2_DATA_CONTROL_SSTL_ODS"> "CLASS_II" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR1_2_ODS</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR1_2_ODS"> "FULL" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_3_HIGH_TEMP_SR</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR2_3_HIGH_TEMP_SR"> "NORMAL" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_3_PA_SR</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR2_3_PA_SR"> "FULL" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_DIFF_DQS_EN</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR2_DIFF_DQS_EN"> "YES" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_RTT</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR2_RTT"> "150OHMS" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_AUTO_SR</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR3_AUTO_SR"> "ENABLED" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_CAS_LATENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_MEM_DDR3_CAS_LATENCY"> "6" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_CAS_WR_LATENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_MEM_DDR3_CAS_WR_LATENCY"> "5" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_ODS</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR3_ODS"> "DIV6" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_RTT</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_DDR3_RTT"> "DIV4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_MDDR_ODS</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_MDDR_ODS"> "FULL" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_MOBILE_PA_SR</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_MOBILE_PA_SR"> "FULL" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_NUM_COL_BITS</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_NUM_COL_BITS"> "10" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_PARTNO</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="REQUIRE" spirit:id="MCB_DDR3.C_MEM_PARTNO"> "MT41J64M16XX-187E" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRAS</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TRAS"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRCD</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TRCD"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TREFI</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TREFI"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRFC</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TRFC"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TRP"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRTP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TRTP"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TWR</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TWR"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TWTR</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEM_TWTR"> "-1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TYPE</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_MEM_TYPE"> "DDR3" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TZQINIT_MAXCNT</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_MEM_TZQINIT_MAXCNT"> "512" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEMCLK_PERIOD</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_MEMCLK_PERIOD"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_NUM_DQ_PINS</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_NUM_DQ_PINS"> "16" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_PORT_CONFIG</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_PORT_CONFIG"> "B32_B32_B32_B32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ADDED_AXI_PARAMS</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S0_AXI_ADDED_AXI_PARAMS"> "TRUE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S0_AXI_ADDR_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_AXI_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S0_AXI_AXI_VER"> "1.02.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S0_AXI_BASEADDR"> "0xc0000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S0_AXI_DATA_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S0_AXI_ENABLE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S0_AXI_ENABLE_AP"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S0_AXI_HIGHADDR"> "0xc7ffffff" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ID_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_S0_AXI_ID_WIDTH"> "3" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_PROTOCOL</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S0_AXI_PROTOCOL"> "AXI4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_REG_EN0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S0_AXI_REG_EN0"> "0x00000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_REG_EN1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S0_AXI_REG_EN1"> "0x01000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S0_AXI_STRICT_COHERENCY"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S0_AXI_SUPPORTS_NARROW_BURST"> "Auto" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S0_AXI_SUPPORTS_READ"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S0_AXI_SUPPORTS_WRITE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_ADDED_AXI_PARAMS</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S1_AXI_ADDED_AXI_PARAMS"> "TRUE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S1_AXI_ADDR_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_AXI_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S1_AXI_AXI_VER"> "1.01.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S1_AXI_BASEADDR"> "0xFFFFFFFF" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S1_AXI_DATA_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S1_AXI_ENABLE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S1_AXI_ENABLE_AP"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S1_AXI_HIGHADDR"> "0x00000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_ID_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_S1_AXI_ID_WIDTH"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_PROTOCOL</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S1_AXI_PROTOCOL"> "AXI4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_REG_EN0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S1_AXI_REG_EN0"> "0x00000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_REG_EN1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S1_AXI_REG_EN1"> "0x01000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S1_AXI_STRICT_COHERENCY"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S1_AXI_SUPPORTS_NARROW_BURST"> "Auto" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S1_AXI_SUPPORTS_READ"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S1_AXI_SUPPORTS_WRITE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_ADDED_AXI_PARAMS</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S2_AXI_ADDED_AXI_PARAMS"> "TRUE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S2_AXI_ADDR_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_AXI_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S2_AXI_AXI_VER"> "1.01.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S2_AXI_BASEADDR"> "0xFFFFFFFF" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S2_AXI_DATA_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S2_AXI_ENABLE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S2_AXI_ENABLE_AP"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S2_AXI_HIGHADDR"> "0x00000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_ID_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_S2_AXI_ID_WIDTH"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_PROTOCOL</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S2_AXI_PROTOCOL"> "AXI4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_REG_EN0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S2_AXI_REG_EN0"> "0x00000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_REG_EN1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S2_AXI_REG_EN1"> "0x01000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S2_AXI_STRICT_COHERENCY"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S2_AXI_SUPPORTS_NARROW_BURST"> "Auto" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S2_AXI_SUPPORTS_READ"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S2_AXI_SUPPORTS_WRITE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_ADDED_AXI_PARAMS</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S3_AXI_ADDED_AXI_PARAMS"> "TRUE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S3_AXI_ADDR_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_AXI_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S3_AXI_AXI_VER"> "1.01.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S3_AXI_BASEADDR"> "0xFFFFFFFF" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S3_AXI_DATA_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S3_AXI_ENABLE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S3_AXI_ENABLE_AP"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S3_AXI_HIGHADDR"> "0x00000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_ID_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_S3_AXI_ID_WIDTH"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_PROTOCOL</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S3_AXI_PROTOCOL"> "AXI4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_REG_EN0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S3_AXI_REG_EN0"> "0x00000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_REG_EN1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S3_AXI_REG_EN1"> "0x01000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S3_AXI_STRICT_COHERENCY"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S3_AXI_SUPPORTS_NARROW_BURST"> "Auto" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S3_AXI_SUPPORTS_READ"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S3_AXI_SUPPORTS_WRITE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_ADDED_AXI_PARAMS</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S4_AXI_ADDED_AXI_PARAMS"> "TRUE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S4_AXI_ADDR_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_AXI_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S4_AXI_AXI_VER"> "1.01.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S4_AXI_BASEADDR"> "0xFFFFFFFF" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S4_AXI_DATA_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S4_AXI_ENABLE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S4_AXI_ENABLE_AP"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S4_AXI_HIGHADDR"> "0x00000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_ID_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_S4_AXI_ID_WIDTH"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_PROTOCOL</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S4_AXI_PROTOCOL"> "AXI4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_REG_EN0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S4_AXI_REG_EN0"> "0x00000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_REG_EN1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S4_AXI_REG_EN1"> "0x01000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S4_AXI_STRICT_COHERENCY"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S4_AXI_SUPPORTS_NARROW_BURST"> "Auto" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S4_AXI_SUPPORTS_READ"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S4_AXI_SUPPORTS_WRITE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_ADDED_AXI_PARAMS</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S5_AXI_ADDED_AXI_PARAMS"> "TRUE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S5_AXI_ADDR_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_AXI_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S5_AXI_AXI_VER"> "1.01.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S5_AXI_BASEADDR"> "0xFFFFFFFF" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S5_AXI_DATA_WIDTH"> "32" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S5_AXI_ENABLE"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S5_AXI_ENABLE_AP"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S5_AXI_HIGHADDR"> "0x00000000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_ID_WIDTH</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_S5_AXI_ID_WIDTH"> "4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_PROTOCOL</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="CONSTANT" spirit:id="MCB_DDR3.C_S5_AXI_PROTOCOL"> "AXI4" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_REG_EN0</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S5_AXI_REG_EN0"> "0x00000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_REG_EN1</spirit:name>
<spirit:value spirit:format="STD_LOGIC_VECTOR" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_S5_AXI_REG_EN1"> "0x01000" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S5_AXI_STRICT_COHERENCY"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S5_AXI_SUPPORTS_NARROW_BURST"> "Auto" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S5_AXI_SUPPORTS_READ"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL_UPDATE" spirit:id="MCB_DDR3.C_S5_AXI_SUPPORTS_WRITE"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SIMULATION</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_SIMULATION"> "FALSE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SKIP_IN_TERM_CAL</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_SKIP_IN_TERM_CAL"> "0" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SKIP_IN_TERM_CAL_VALUE</spirit:name>
<spirit:value spirit:format="STRING" spirit:resolve="OPTIONAL" spirit:id="MCB_DDR3.C_SKIP_IN_TERM_CAL_VALUE"> "NONE" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SYS_RST_PRESENT</spirit:name>
<spirit:value spirit:format="INTEGER" spirit:resolve="UPDATE" spirit:id="MCB_DDR3.C_SYS_RST_PRESENT"> "1" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>HW_VER</spirit:name>
<spirit:value spirit:format="" spirit:resolve="" spirit:id="MCB_DDR3.HW_VER"> "1.02.a" </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>INSTANCE</spirit:name>
<spirit:value spirit:format="" spirit:resolve="" spirit:id="MCB_DDR3.INSTANCE"> "MCB_DDR3" </spirit:value>
</spirit:modelParameter>
</spirit:modelParameters>
</spirit:model>
</spirit:component>

View File

@ -1,598 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" xmlns:xilinx="http://www.xilinx.com">
<spirit:vendor/>
<spirit:library/>
<spirit:name/>
<spirit:version/>
<spirit:model>
<spirit:views/>
<spirit:ports/>
<spirit:modelParameters>
<spirit:modelParameter>
<spirit:name>C_ARB_ALGORITHM</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_ALGORITHM"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_NUM_TIME_SLOTS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_NUM_TIME_SLOTS"> 12 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_0</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_0"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_1</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_1"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_10</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_10"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_11</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_11"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_2</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_2"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_3</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_3"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_4</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_4"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_5</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_5"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_6</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_6"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_7</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_7"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_8</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_8"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ARB_TIME_SLOT_9</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ARB_TIME_SLOT_9"> 0b000000000000000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_AXI_NBURST_SUPPORT</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_AXI_NBURST_SUPPORT"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_BEGIN_ADDRESS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_BEGIN_ADDRESS"> 32&apos;h01000000:32&apos;h00000700 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_CALIB_SOFT_IP</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_CALIB_SOFT_IP"> TRUE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_CLKFBOUT_MULT</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_CLKFBOUT_MULT"> 2 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_CLKOUT0_DIVIDE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_CLKOUT0_DIVIDE"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_CLKOUT1_DIVIDE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_CLKOUT1_DIVIDE"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_CLKOUT2_DIVIDE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_CLKOUT2_DIVIDE"> 16 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_CLKOUT3_DIVIDE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_CLKOUT3_DIVIDE"> 8 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DIVCLK_DIVIDE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DIVCLK_DIVIDE"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ0_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ0_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ10_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ10_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ11_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ11_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ12_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ12_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ13_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ13_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ14_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ14_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ15_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ15_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ1_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ1_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ2_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ2_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ3_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ3_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ4_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ4_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ5_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ5_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ6_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ6_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ7_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ7_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ8_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ8_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_DQ9_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_DQ9_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_END_ADDRESS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_END_ADDRESS"> 32&apos;h02ffffff:32&apos;h000008ff </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ENFORCE_RD_WR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ENFORCE_RD_WR"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ENFORCE_RD_WR_CMD</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ENFORCE_RD_WR_CMD"> 8&apos;h11 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_ENFORCE_RD_WR_PATTERN</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_ENFORCE_RD_WR_PATTERN"> 3&apos;b000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_EN_WRAP_TRANS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_EN_WRAP_TRANS"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_HW_TESTING</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_HW_TESTING"> FALSE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INCLK_PERIOD</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INCLK_PERIOD"> 2)) </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INPUT_CLK_TYPE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INPUT_CLK_TYPE"> DIFFERENTIAL </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_AR_REGISTER</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_AR_REGISTER"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_AW_REGISTER</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_AW_REGISTER"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_B_REGISTER</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_B_REGISTER"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_MASTERS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_MASTERS"> microblaze_0.M_AXI_DC &amp; microblaze_0.M_AXI_IC &amp; ETHERNET_dma.M_AXI_SG &amp; ETHERNET_dma.M_AXI_MM2S &amp; ETHERNET_dma.M_AXI_S2MM </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_READ_ACCEPTANCE"> 4 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_READ_FIFO_DEPTH"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_R_REGISTER</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_R_REGISTER"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_SECURE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_SECURE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_WRITE_ACCEPTANCE"> 4 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_WRITE_FIFO_DEPTH"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_INTERCONNECT_S0_AXI_W_REGISTER</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_INTERCONNECT_S0_AXI_W_REGISTER"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_LDQSN_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_LDQSN_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_LDQSP_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_LDQSP_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_LOC</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MCB_LOC"> MEMC3 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_PERFORMANCE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MCB_PERFORMANCE"> STANDARD </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_RZQ_LOC</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MCB_RZQ_LOC"> K7 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_USE_EXTERNAL_BUFPLL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MCB_USE_EXTERNAL_BUFPLL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MCB_ZIO_LOC</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MCB_ZIO_LOC"> R7 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MC_CALIBRATION_DELAY</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MC_CALIBRATION_DELAY"> HALF </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MC_CALIBRATION_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MC_CALIBRATION_MODE"> CALIBRATION </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MC_CALIB_BYPASS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MC_CALIB_BYPASS"> NO </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEMCLK_PERIOD</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEMCLK_PERIOD"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_ADDR_ORDER</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_ADDR_ORDER"> ROW_BANK_COLUMN </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_ADDR_WIDTH"> 13 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_BANKADDR_WIDTH</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_BANKADDR_WIDTH"> 3 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_BURST_LEN</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_BURST_LEN"> 8 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_CAS_LATENCY</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_CAS_LATENCY"> 6 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR1_2_ADDR_CONTROL_SSTL_ODS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR1_2_ADDR_CONTROL_SSTL_ODS"> CLASS_II </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR1_2_DATA_CONTROL_SSTL_ODS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR1_2_DATA_CONTROL_SSTL_ODS"> CLASS_II </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR1_2_ODS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR1_2_ODS"> FULL </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_3_HIGH_TEMP_SR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR2_3_HIGH_TEMP_SR"> NORMAL </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_3_PA_SR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR2_3_PA_SR"> FULL </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_DIFF_DQS_EN</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR2_DIFF_DQS_EN"> YES </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR2_RTT</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR2_RTT"> 150OHMS </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_AUTO_SR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR3_AUTO_SR"> ENABLED </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_CAS_LATENCY</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR3_CAS_LATENCY"> 6 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_CAS_WR_LATENCY</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR3_CAS_WR_LATENCY"> 5 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_ODS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR3_ODS"> DIV6 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DDR3_RTT</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DDR3_RTT"> DIV4 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_DENSITY</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_DENSITY"> 1Gb </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_MDDR_ODS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_MDDR_ODS"> FULL </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_MOBILE_PA_SR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_MOBILE_PA_SR"> FULL </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_NUM_COL_BITS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_NUM_COL_BITS"> 10 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_PARTNO</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_PARTNO"> MT41J64M16XX-187E </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRAS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TRAS"> 37500 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRCD</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TRCD"> 13130 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TREFI</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TREFI"> 7800000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRFC</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TRFC"> 160000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRP</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TRP"> 13130 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TRTP</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TRTP"> 7500 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TWR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TWR"> 15000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TWTR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TWTR"> 7500 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_MEM_TYPE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_MEM_TYPE"> DDR3 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_NUM_DQ_PINS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_NUM_DQ_PINS"> 16 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P0_MASK_SIZE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P0_MASK_SIZE"> 32 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P0_PORT_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P0_PORT_MODE"> BI_MODE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P1_PORT_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P1_PORT_MODE"> NONE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P2_PORT_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P2_PORT_MODE"> NONE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P3_PORT_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P3_PORT_MODE"> NONE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P4_PORT_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P4_PORT_MODE"> NONE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_P5_PORT_MODE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_P5_PORT_MODE"> NONE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_PORT_CONFIG</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_PORT_CONFIG"> B32_B32_B32_B32 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_PORT_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_PORT_ENABLE"> 6&apos;b000001 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_PRBS_EADDR_MASK_POS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_PRBS_EADDR_MASK_POS"> 32&apos;hfc000000:32&apos;hfffff000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_PRBS_SADDR_MASK_POS</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_PRBS_SADDR_MASK_POS"> 32&apos;h01000000:32&apos;h00000700 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_RST_ACT_LOW</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_RST_ACT_LOW"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ADDR_WIDTH</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_ADDR_WIDTH"> 32 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_BASEADDR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_BASEADDR"> 0xc0000000 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_DATA_WIDTH</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_DATA_WIDTH"> 32 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_ENABLE"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_ENABLE_AP</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_ENABLE_AP"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_HIGHADDR</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_HIGHADDR"> 0xc7ffffff </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_STRICT_COHERENCY</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_STRICT_COHERENCY"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_SUPPORTS_NARROW_BURST</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_SUPPORTS_NARROW_BURST"> Auto </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_SUPPORTS_READ"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S0_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S0_AXI_SUPPORTS_WRITE"> 1 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S1_AXI_ENABLE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S1_AXI_SUPPORTS_READ"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S1_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S1_AXI_SUPPORTS_WRITE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S2_AXI_ENABLE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S2_AXI_SUPPORTS_READ"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S2_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S2_AXI_SUPPORTS_WRITE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S3_AXI_ENABLE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S3_AXI_SUPPORTS_READ"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S3_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S3_AXI_SUPPORTS_WRITE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S4_AXI_ENABLE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S4_AXI_SUPPORTS_READ"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S4_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S4_AXI_SUPPORTS_WRITE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_ENABLE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S5_AXI_ENABLE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_SUPPORTS_READ</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S5_AXI_SUPPORTS_READ"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_S5_AXI_SUPPORTS_WRITE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_S5_AXI_SUPPORTS_WRITE"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SIMULATION</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_SIMULATION"> FALSE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SKIP_DYNAMIC_CAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_SKIP_DYNAMIC_CAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SKIP_IN_TERM_CAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_SKIP_IN_TERM_CAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SKIP_IN_TERM_CAL_VALUE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_SKIP_IN_TERM_CAL_VALUE"> NONE </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_SMALL_DEVICE</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_SMALL_DEVICE"> </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_UDQSN_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_UDQSN_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>C_UDQSP_TAP_DELAY_VAL</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.C_UDQSP_TAP_DELAY_VAL"> 0 </spirit:value>
</spirit:modelParameter>
<spirit:modelParameter>
<spirit:name>DEBUG_EN</spirit:name>
<spirit:value spirit:format="string" spirit:resolve="OPTIONAL" spirit:id="_component_.DEBUG_EN"> 0 </spirit:value>
</spirit:modelParameter>
</spirit:modelParameters>
</spirit:model>
</spirit:component>

View File

@ -1,263 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE stylesheet [
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
<!ENTITY HEXUPPER "ABCDEFxX0123456789">
<!ENTITY HEXLOWER "abcdefxX0123456789">
<!ENTITY HEXU2L " '&HEXLOWER;' , '&HEXUPPER;' ">
<!ENTITY ALLMODS "MODULE[(@INSTANCE)]">
<!ENTITY BUSMODS "MODULE[(@MODCLASS ='BUS')]">
<!ENTITY CPUMODS "MODULE[(@MODCLASS ='PROCESSOR')]">
<!ENTITY MODIOFS "MODULE/IOINTERFACES/IOINTERFACE">
<!ENTITY ALLIOFS "&MODIOFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<!ENTITY MODBIFS "MODULE/BUSINTERFACES/BUSINTERFACE">
<!ENTITY ALLBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<!ENTITY MSTBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (@TYPE = 'MASTER')]">
<!ENTITY SLVBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (@TYPE = 'SLAVE')]">
<!ENTITY MOSBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@TYPE = 'MASTER') or (@TYPE = 'SLAVE'))]">
<!ENTITY P2PBIFS "&MODBIFS;[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR'))]">
<!ENTITY MODPORTS "MODULE/PORTS/PORT">
<!ENTITY ALLPORTS "&MODPORTS;[ (not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<!ENTITY NDFPORTS "&MODPORTS;[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (not(@BUS) and not(@IOS)))]">
<!ENTITY DEFPORTS "&MODPORTS;[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ((@BUS) or (@IOS)))]">
]>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<xsl:variable name="G_ROOT" select="/"/>
<!--
======================================================
EDK SYSTEM (EDWARD) Globals.
======================================================
-->
<xsl:variable name="G_SYS_EVAL">
<xsl:choose>
<xsl:when test="not($P_SYSTEM_XML = '__UNDEF__')"><xsl:text>document($P_SYSTEM_XML)</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>/</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="G_SYS_DOC" select="dyn:evaluate($G_SYS_EVAL)"/>
<xsl:variable name="G_SYS" select="$G_SYS_DOC/EDKSYSTEM"/>
<xsl:variable name="G_SYS_TIMESTAMP" select="$G_SYS/@TIMESTAMP"/>
<xsl:variable name="G_SYS_EDKVERSION" select="$G_SYS/@EDKVERSION"/>
<xsl:variable name="G_SYS_INFO" select="$G_SYS/SYSTEMINFO"/>
<xsl:variable name="G_SYS_INFO_PKG" select="$G_SYS_INFO/@PACKAGE"/>
<xsl:variable name="G_SYS_INFO_DEV" select="$G_SYS_INFO/@DEVICE"/>
<xsl:variable name="G_SYS_INFO_ARCH" select="$G_SYS_INFO/@ARCH"/>
<xsl:variable name="G_SYS_INFO_SPEED" select="$G_SYS_INFO/@SPEEDGRADE"/>
<xsl:variable name="G_SYS_MODS" select="$G_SYS/MODULES"/>
<xsl:variable name="G_SYS_EXPS" select="$G_SYS/EXTERNALPORTS"/>
<xsl:variable name="COL_FOCUSED_MASTER" select="'AAAAFF'"/>
<xsl:variable name="COL_BG_OUTOF_FOCUS_CONNECTIONS" select="'AA7711'"/>
<!-- INDEX KEYS FOR FAST ACCESS -->
<xsl:key name="G_MAP_MODULES" match="&ALLMODS;" use="@INSTANCE"/>
<xsl:key name="G_MAP_PROCESSORS" match="&CPUMODS;" use="@INSTANCE"/>
<xsl:key name="G_MAP_BUSSES" match="&BUSMODS;" use="@INSTANCE"/>
<xsl:key name="G_MAP_BUSSES" match="&BUSMODS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_BUSSES" match="&BUSMODS;" use="@BUSSTD_PSF"/>
<xsl:key name="G_MAP_ALL_IOFS" match="&ALLIOFS;" use="../../@INSTANCE"/>
<xsl:key name="G_MAP_ALL_BIFS" match="&ALLBIFS;" use="../../@INSTANCE"/>
<xsl:key name="G_MAP_ALL_BIFS_BY_BUS" match="&ALLBIFS;" use="@BUSNAME"/>
<!--
-->
<xsl:key name="G_MAP_MST_BIFS" match="&MSTBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_SLV_BIFS" match="&SLVBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_MOS_BIFS" match="&MOSBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_P2P_BIFS" match="&P2PBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_P2P_BIFS" match="&P2PBIFS;" use="@BUSSTD"/>
<xsl:key name="G_MAP_P2P_BIFS" match="&P2PBIFS;" use="@BUSSTD_PSF"/>
<xsl:key name="G_MAP_ALL_PORTS" match="&ALLPORTS;" use="../../@INSTANCE"/>
<xsl:key name="G_MAP_DEF_PORTS" match="&DEFPORTS;" use="../../@INSTANCE"/> <!-- Default ports -->
<xsl:key name="G_MAP_NDF_PORTS" match="&NDFPORTS;" use="../../@INSTANCE"/> <!-- Non Default ports -->
<!--
<xsl:key name="G_MAP_MASTER_BIFS" match="&MSTBIFS;" use="@BUSNAME"/>
<xsl:key name="G_MAP_MASTER_BIFS" match="MODULE[not(@MODCLASS ='BUS')]/BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (@TYPE = 'MASTER')]" use="../../@INSTANCE.@NAME"/>
<xsl:key name="G_MAP_BUSSES_BY_INSTANCE" match="MODULE[(@MODCLASS ='BUS')]" use="@INSTANCE"/>
<xsl:key name="G_MAP_XB_BUSSES" match="MODULE[(@MODCASS ='BUS')and (@IS_CROSSBAR)]" use="@INSTANCE"/>
-->
<!--
======================================================
Groups.xml (BLOCKS) Globals
======================================================
-->
<xsl:variable name="G_GRP_EVAL">
<xsl:choose>
<xsl:when test="not($P_GROUPS_XML = '__UNDEF__')"><xsl:text>document($P_GROUPS_XML)</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>/</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="G_GRPS_DOC" select="dyn:evaluate($G_GRP_EVAL)"/>
<xsl:variable name="G_GROUPS" select="$G_GRPS_DOC/BLOCKS"/>
<xsl:variable name="G_NUM_OF_PROCS" select="count($G_SYS/MODULES/MODULE[(@MODCLASS = 'PROCESSOR')])"/>
<xsl:variable name="G_NUM_OF_PROCS_W_ADDRS" select="count($G_SYS/MODULES/MODULE[(@MODCLASS = 'PROCESSOR') and MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]])"/>
<xsl:variable name="G_FOCUSED_SCOPE">
<xsl:choose>
<!-- FOCUSING ON SPECIFIC SELECTIONS-->
<xsl:when test="$G_ROOT/SAV/SELECTION">
</xsl:when>
<!-- FOCUSING ON PROCESSOR -->
<xsl:when test="$G_ROOT/SAV/MASTER">
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message>FOCUSED MASTERS SPECIFIED</xsl:message></xsl:if>
<xsl:for-each select="$G_ROOT/SAV/MASTER">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:variable name="m_mod_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $m_inst_)]"/>
<xsl:for-each select="$m_mod_/BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and not(@BUSNAME = '__NOC__') and ((@TYPE = 'MASTER') or (@TYPE = 'SLAVE') or (@TYPE = 'INITIATOR') or (@TYPE = 'TARGET'))]">
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message> FOCUSED MASTER BIF <xsl:value-of select="$m_inst_"/>.<xsl:value-of select="@NAME"/> = <xsl:value-of select="@BUSNAME"/></xsl:message></xsl:if>
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<BUS NAME="{@BUSNAME}" BUSSTD="{@BUSSTD}"/>
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@INSTANCE = $m_inst_) and (@MODCLASS = 'BUS_BRIDGE'))]/BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (@TYPE = 'SLAVE') and (@BUSNAME = $b_bus_)]">
<xsl:variable name="b_inst_" select="../../@INSTANCE"/>
<xsl:choose>
<xsl:when test="MASTERS/MASTER">
<xsl:for-each select="MASTERS/MASTER">
<xsl:variable name="sm_inst_" select="@INSTANCE"/>
<xsl:if test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $sm_inst_)]) &gt; 0">
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message> FOCUSED PERIPHERAL BRIDGE <xsl:value-of select="$b_inst_"/></xsl:message></xsl:if>
<PERIPHERAL NAME="{$b_inst_}"/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message> FOCUSED PERIPHERAL BRIDGE <xsl:value-of select="$b_inst_"/></xsl:message></xsl:if>
<PERIPHERAL NAME="{$b_inst_}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
<xsl:for-each select="$m_mod_/PERIPHERALS/PERIPHERAL">
<xsl:variable name="p_id_" select="@INSTANCE"/>
<xsl:variable name="p_mod_" select="$G_SYS_MODS/MODULE[@INSTANCE = $p_id_]"/>
<PERIPHERAL NAME="{@INSTANCE}"/>
<xsl:variable name="p_mr_cnt_" select="count($m_mod_/MEMORYMAP/MEMRANGE[(@INSTANCE = $p_id_)])"/>
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message> FOCUSED PERIPHERAL <xsl:value-of select="$p_id_"/> has <xsl:value-of select="$p_mr_cnt_"/> memory ranges</xsl:message></xsl:if>
<xsl:for-each select="$m_mod_/MEMORYMAP/MEMRANGE[(@INSTANCE = $p_id_)]/ACCESSROUTE/ROUTEPNT">
<xsl:variable name="b_id_" select="@INSTANCE"/>
<xsl:for-each select="$G_SYS_MODS/MODULE[((@INSTANCE = $b_id_) and (@MODCLASS = 'BUS'))]">
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message> FOCUSED PERIPHERAL BUS <xsl:value-of select="@INSTANCE"/></xsl:message></xsl:if>
<BUS NAME="{@INSTANCE}" BUSSTD="{@BUSSTD}"/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
<!-- FOCUSING ON BUS -->
<xsl:when test="$G_ROOT/SAV/BUS">
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message>FOCUSED BUSSES SPECIFIED</xsl:message></xsl:if>
<xsl:for-each select="$G_ROOT/SAV/BUS">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:variable name="m_mod_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $m_inst_)]"/>
<xsl:variable name="m_bstd_" select="$m_mod_/@BUSSTD"/>
<BUS NAME="{$m_inst_}" BUSSTD="{$m_bstd_}"/>
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message> FOCUSED BUS <xsl:value-of select="$m_inst_"/> <xsl:value-of select="$m_bstd_"/></xsl:message></xsl:if>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="G_HAVE_XB_BUSSES">
<xsl:choose>
<xsl:when test="(count($G_SYS_MODS/MODULE[((@MODCLASS = 'BUS') and (@IS_CROSSBAR = 'TRUE'))]) &gt; 0)">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template name="F_ModClass_To_IpClassification">
<xsl:param name="iModClass" select="'NONE'"/>
<xsl:param name="iBusStd" select="'NONE'"/>
<xsl:choose>
<xsl:when test="$iModClass = 'BUS'"><xsl:value-of select="$iBusStd"/> Bus</xsl:when>
<xsl:when test="$iModClass = 'DEBUG'">Debug</xsl:when>
<xsl:when test="$iModClass = 'MEMORY'">Memory</xsl:when>
<xsl:when test="$iModClass = 'MEMORY_CNTLR'">Memory Controller</xsl:when>
<xsl:when test="$iModClass = 'INTERRUPT_CNTLR'">Interrupt Controller</xsl:when>
<xsl:when test="$iModClass = 'PERIPHERAL'">Peripheral</xsl:when>
<xsl:when test="$iModClass = 'PROCESSOR'">Processor</xsl:when>
<xsl:when test="$iModClass = 'BUS_BRIDGE'">Bus Bridge</xsl:when>
<xsl:otherwise><xsl:value-of select="$iModClass"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="F_Connection_To_AXI_SLAVE">
<xsl:param name="iNameParam" select="''"/>
<xsl:param name="iModuleRefParam" select="''"/>
<xsl:variable name="FilName" select="$iModuleRefParam/PARAMETERS/PARAMETER[@NAME=concat('C_', $iNameParam, '_MASTERS')]/@VALUE"/>
<!-- <xsl:message>FIL NAME WAS <xsl:value-of select="$FilName"/></xsl:message> -->
<xsl:value-of select="$FilName"/>
</xsl:template>
<xsl:template name="F_IS_Interface_External">
<xsl:param name="iInstRef"/> <!-- Instance reference -->
<xsl:param name="iIntfRef"/> <!-- Interface reference -->
<xsl:variable name="intfName_" select="$iIntfRef/@NAME"/>
<xsl:variable name="instName_" select="$iInstRef/@INSTANCE"/>
<!-- <xsl:message>NAME 1 <xsl:value-of select="$expName1_"/></xsl:message>-->
<!-- <xsl:message>NAME 2 <xsl:value-of select="$expName2_"/></xsl:message>-->
<!--
<xsl:variable name="expName1_" select="concat($instName_,'_',$intfName_,'_',@PHYSICAL,'_pin')"/>
<xsl:variable name="expName2_" select="concat($instName_,'_',@PHYSICAL,'_pin')"/>
-->
<!-- Store the number of physical ports connected externals in a variable -->
<xsl:variable name="connected_externals_">
<xsl:for-each select="$iIntfRef/PORTMAPS/PORTMAP">
<xsl:variable name="portName_" select="@PHYSICAL"/>
<xsl:if test="$iInstRef/PORTS/PORT[(@NAME = $portName_)]">
<xsl:variable name="portNet_" select="$iInstRef/PORTS/PORT[(@NAME = $portName_)]/@SIGNAME"/>
<xsl:if test="$G_SYS_EXPS/PORT[(@SIGNAME = $portNet_)]">
<EXTP NAME="{@PHYSICAL}"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<!--
<xsl:message><xsl:value-of select="$instName_"/>.<xsl:value-of select="$intfName_"/> has <xsl:value-of select="count(exsl:node-set($connected_externals_)/EXTP)"/> connected externals.</xsl:message>
-->
<xsl:choose>
<xsl:when test="(count(exsl:node-set($connected_externals_)/EXTP) &gt; 0)">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,245 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE stylesheet [
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
<!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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math exsl dyn xlink">
<xsl:include href="edw2xtl_sav_globals.xsl"/>
<xsl:include href="edw2xtl_sav_view_addr.xsl"/>
<xsl:include href="edw2xtl_sav_view_busif.xsl"/>
<xsl:include href="edw2xtl_sav_view_port.xsl"/>
<xsl:include href="edw2xtl_sav_view_groups.xsl"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="P_SYSTEM_XML" select= "'__UNDEF__'"/>
<xsl:param name="P_GROUPS_XML" select= "'__UNDEF__'"/>
<xsl:param name="G_DEBUG" select="'FALSE'"/>
<xsl:param name="G_ADD_CHOICES" select="'TRUE'"/>
<!--
<xsl:param name="P_VIEW" select="'__UNDEF__'"/>
<xsl:param name="P_MODE" select="'__UNDEF__'"/>
<xsl:param name="P_SCOPE" select="'__UNDEF__'"/>
-->
<!-- MAIN TEMPLATE -->
<xsl:template match="SAV[@VIEW]">
<xsl:if test="$G_DEBUG='TRUE'">
<xsl:message>SAV VIEW <xsl:value-of select="@VIEW"/></xsl:message>
<xsl:message>SAV MODE <xsl:value-of select="@MODE"/></xsl:message>
<xsl:message>SAV SCOPE <xsl:value-of select="@SCOPE"/></xsl:message>
</xsl:if>
<xsl:choose>
<xsl:when test="not(@VIEW = 'PORT') and not(@VIEW = 'BUSINTERFACE') and not(@VIEW = 'ADDRESS')">
<xsl:message>EDW2SAV XTELLER ERROR: UNDEFINED VIEW <xsl:value-of select="@VIEW"/></xsl:message>
</xsl:when>
<xsl:when test="(@MODE and not(@MODE = 'FLAT') and not(@MODE = 'TREE') and not(@MODE = 'GROUPS'))">
<xsl:message>EDW2SAV XTELLER ERROR: UNDEFINED MODE <xsl:value-of select="@MODE"/></xsl:message>
</xsl:when>
<xsl:when test="(@SCOPE and not(@SCOPE = 'FULL') and not(@SCOPE= 'FOCUS'))">
<xsl:message>EDW2SAV XTELLER ERROR: UNDEFINED SCOPE <xsl:value-of select="@SCOPE"/></xsl:message>
</xsl:when>
<xsl:when test="$P_SYSTEM_XML ='__UNDEF__'">
<xsl:message>EDW2SAV XTELLER ERROR: SYSTEM XML UNDEFINED</xsl:message>
</xsl:when>
<xsl:when test="not($G_SYS)" >
<xsl:message>EDW2SAV XTELLER ERROR: EDKSYSTEM MISSING in SYSTEM XML <xsl:value-of select="$P_SYSTEM_XML"/></xsl:message>
</xsl:when>
<xsl:when test="($P_GROUPS_XML ='__UNDEF__') and (@MODE = 'GROUPS')" >
<xsl:message>EDW2SAV XTELLER ERROR: GROUP XML UNDEFINED for FOCUS</xsl:message>
</xsl:when>
<xsl:when test="($P_GROUPS_XML ='__UNDEF__') and (@SCOPE = 'FOCUS') and (@VIEW = 'BUSINTERFACE')" >
<xsl:message>EDW2SAV XTELLER ERROR: GROUP XML UNDEFINED for SCOPE</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$G_DEBUG='TRUE'">
<xsl:message>SYSTEM XML <xsl:value-of select="$P_SYSTEM_XML"/></xsl:message>
<xsl:message>GROUPS XML <xsl:value-of select="$P_GROUPS_XML"/></xsl:message>
</xsl:if>
<xsl:variable name="use_mode_">
<xsl:choose>
<xsl:when test="@MODE = 'GROUPS'">TREE</xsl:when>
<xsl:otherwise><xsl:value-of select="@MODE"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="num_procs_focused_on_" select="count(MASTER)"/>
<xsl:variable name="num_buses_focused_on_" select="count(BUS)"/>
<xsl:element name="SET">
<xsl:attribute name="CLASS">PROJECT</xsl:attribute>
<xsl:attribute name="VIEW_ID"><xsl:value-of select="@VIEW"/></xsl:attribute>
<xsl:attribute name="DISPLAYMODE"><xsl:value-of select="$use_mode_"/></xsl:attribute>
<xsl:choose>
<!-- ADDRESS TAB VIEW -->
<xsl:when test="(@VIEW = 'ADDRESS')">
<xsl:call-template name="WRITE_VIEW_ADDRESS"/>
</xsl:when>
<!-- BIF TAB VIEWS -->
<xsl:when test="((@VIEW ='BUSINTERFACE') and (@SCOPE = 'FOCUS') and ($num_procs_focused_on_ &gt; 0))">
<xsl:call-template name="WRITE_VIEW_BIF_FOCUS_ON_PROCS"/>
</xsl:when>
<!-- BIF TAB VIEWS -->
<xsl:when test="((@VIEW ='BUSINTERFACE') and (@SCOPE = 'FOCUS') and ($num_buses_focused_on_ &gt; 0))">
<xsl:call-template name="WRITE_VIEW_BIF_FOCUS_ON_BUSES"/>
</xsl:when>
<xsl:when test="((@VIEW ='BUSINTERFACE') and (@MODE = 'TREE') and not(@SCOPE))">
<xsl:call-template name="WRITE_VIEW_BIF_TREE"/>
</xsl:when>
<xsl:when test="((@VIEW = 'BUSINTERFACE') and (@MODE = 'FLAT') and not(@SCOPE))">
<xsl:call-template name="WRITE_VIEW_BIF_FLAT"/>
</xsl:when>
<xsl:when test="((@VIEW = 'BUSINTERFACE') and (@MODE = 'GROUPS'))">
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="$G_BLOCKS"/>
</xsl:call-template>
</xsl:when>
<!-- PORT TAB VIEWS -->
<xsl:when test="((@VIEW ='PORT') and (@SCOPE = 'FOCUS'))">
<xsl:call-template name="WRITE_VIEW_PORT_FOCUSED"/>
</xsl:when>
<!-- Generate XTeller panel data for Ports using hierarchy -->
<xsl:when test="((@VIEW = 'PORT') and (@MODE = 'TREE'))">
<xsl:call-template name="WRITE_VIEW_PORT_TREE"/>
</xsl:when>
<!-- Generate XTeller panel data for Ports without hierarchy, (flat view) -->
<xsl:when test="((@VIEW='PORT') and (@MODE = 'FLAT'))">
<xsl:call-template name="WRITE_VIEW_PORT_FLAT"/>
</xsl:when>
<xsl:otherwise>
<xsl:message>ERROR during SAV XTeller generation with panel <xsl:value-of select="@VIEW"/> and display mode <xsl:value-of select="@MODE"/></xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="EDKSYSTEM">
<!--
<xsl:message>EDW VERSION <xsl:value-of select="$G_EDWVER"/></xsl:message>
<xsl:message>VIEW <xsl:value-of select="$VIEW"/></xsl:message>
<xsl:message>MODE <xsl:value-of select="$MODE"/></xsl:message>
-->
<xsl:variable name="by_interface_">
<xsl:choose>
<!--
Show interfaces or not
-->
<xsl:when test="(($SHOW_BUSIF ='TRUE') or ($SHOW_IOIF ='TRUE'))">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--
<xsl:message>VIEW <xsl:value-of select="$VIEW"/></xsl:message>
<xsl:message>MODE <xsl:value-of select="$MODE"/></xsl:message>
<xsl:message>BY INTERFACE <xsl:value-of select="$by_interface_"/></xsl:message>
-->
<xsl:variable name="displayMode_">
<xsl:choose>
<!--
Hard code view to view for address panel,
always show view in what was formerly
multiprocessor view. See below.
<xsl:when test="(($G_NUM_OF_PROCS &gt; 1) and ($VIEW='ADDRESS'))">TREE</xsl:when>
<xsl:when test="(($G_NUM_OF_PROCS &lt;= 1) and ($VIEW='ADDRESS'))">FLAT</xsl:when>
-->
<xsl:when test="($VIEW='ADDRESS')">TREE</xsl:when>
<xsl:otherwise><xsl:value-of select="$MODE"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<SET CLASS="PROJECT" VIEW= "{$VIEW}" MODE="{$displayMode_}">
<xsl:choose>
<!-- Generate XTeller panel data for Bus Interfaces using hierarchy -->
<xsl:when test="(($VIEW='BUSINTERFACE') and (not($MODE) or ($MODE = 'TREE')))">
<xsl:call-template name="WRITE_VIEW_BIF_TREE"/>
</xsl:when>
<!-- Generate XTeller panel data for Bus Interfaces without hierarchy, (flat view) -->
<xsl:when test="(($VIEW='BUSINTERFACE') and ($MODE = 'FLAT'))">
<xsl:call-template name="WRITE_VIEW_BIF_FLAT"/>
</xsl:when>
<!-- Generate XTeller panel data for Ports using hierarchy -->
<xsl:when test="(($VIEW='PORT') and (not($MODE) or ($MODE = 'TREE')))">
<xsl:call-template name="WRITE_VIEW_PORT_TREE"/>
</xsl:when>
<!-- Generate XTeller panel data for Ports without hierarchy, (flat view) -->
<xsl:when test="(($VIEW='PORT') and ($MODE = 'FLAT'))">
<xsl:call-template name="WRITE_VIEW_PORT_FLAT"/>
</xsl:when>
<!--
Hard code display of the address panel to always the the same.
No more tree or flat mode, always show address panel
in what was formerly the multiprocessor view.
-->
<xsl:when test="($VIEW='ADDRESS')">
<xsl:call-template name="WRITE_VIEW_ADDRESS"/>
</xsl:when>
<xsl:otherwise>
<xsl:message>ERROR during SAV XTeller generation with panel <xsl:value-of select="$VIEW"/> and display mode <xsl:value-of select="$MODE"/></xsl:message>
</xsl:otherwise>
</xsl:choose>
</SET>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,894 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE stylesheet [
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
<!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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="exsl dyn math xlink">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!--
================================================================================
Generate XTeller for ADDRESSES
================================================================================
-->
<xsl:template name="WRITE_VIEW_ADDRESS">
<xsl:for-each select="$G_SYS_MODS/MODULE[((@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ACCESSROUTE)]))]">
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
<xsl:variable name="procInst_" select="@INSTANCE"/>
<xsl:variable name="procMod_" select="self::node()"/>
<xsl:variable name="procModType" select="@MODTYPE"/>
<xsl:variable name="procModClass_" select="@MODCLASS"/>
<xsl:variable name="procInstHdrVal_"><xsl:value-of select="$procInst_"/>'s Address Map</xsl:variable>
<xsl:variable name="procInstRowIdx_" select="position() - 1"/>
<!-- <SET ID="{$procInst_}" CLASS="MODULE" ROW_INDEX="{$procInstRowIdx_}"> -->
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="$procInst_"/></xsl:attribute>
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
<xsl:attribute name="ROW_INDEX"><xsl:value-of select="$procInstRowIdx_"/></xsl:attribute>
<!-- <VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$procInstHdrVal_}"/> -->
<xsl:element name="VARIABLE">
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$procInstHdrVal_"/></xsl:attribute>
<xsl:attribute name="VIEWDISP">Instance</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
</xsl:element>
<xsl:for-each select="$procMod_/MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@MEMTYPE = 'BRIDGE')))]">
<xsl:sort data-type="number" select="@BASEDECIMAL" order="ascending"/>
<xsl:variable name="addr_id_"><xsl:value-of select="@BASENAME"/>:<xsl:value-of select="@HIGHNAME"/></xsl:variable>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="highName_" select="@HIGHNAME"/>
<!--
<xsl:if test="$G_DEBUG='TRUE'">
<xsl:message>ADDRESS ID <xsl:value-of select="$addr_id_"/></xsl:message>
</xsl:if>
-->
<xsl:variable name="set_id_">
<xsl:if test="(@INSTANCE)">
<xsl:value-of select="$procInst_"/>.<xsl:value-of select="@INSTANCE"/>:<xsl:value-of select="$addr_id_"/>
</xsl:if>
<xsl:if test="not(@INSTANCE)">
<xsl:value-of select="$procInst_"/>:<xsl:value-of select="$addr_id_"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="procAddrRowIdx_" select="position() - 1"/>
<SET ID="{$set_id_}" CLASS="ADDRESS" ROW_INDEX="{$procAddrRowIdx_}">
<xsl:if test="(@INSTANCE)">
<xsl:variable name="periInst_" select="@INSTANCE"/>
<xsl:variable name="periMod_" select="key('G_MAP_MODULES', $periInst_)"/>
<!--
<xsl:variable name="subInstance_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $instance_)]"/>
<xsl:message>Count memrange slaves <xsl:value-of select="count($modMemMapSlvs_)"/> </xsl:message>
<xsl:message>Count mod valid bifs <xsl:value-of select="count($modValidBifs_)"/> </xsl:message>
-->
<xsl:variable name="periModType_" select="$periMod_/@MODTYPE"/>
<xsl:variable name="periViewIcon_" select="$periMod_/LICENSEINFO/@ICON_NAME"/>
<xsl:variable name="periHwVersion_" select="$periMod_/@HWVERSION"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$periInst_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$periModType_}" VIEWICON="{$periViewIcon_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$periHwVersion_}"/>
</xsl:if>
<xsl:if test="not(@INSTANCE)">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$procInst_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$procModType}" VIEWICON="{$procMod_/LICENSEINFO/@ICON_NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$procHwVersion_}"/>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
<xsl:variable name="instName_">
<xsl:choose>
<xsl:when test="@INSTANCE"><xsl:value-of select="@INSTANCE"/></xsl:when>
<xsl:otherwise>Connected<xsl:value-of select="$procInst_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--
<xsl:message>INST : <xsl:value-of select="$set_id_"/></xsl:message>
-->
<xsl:variable name="is_locked_">
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="baseAddrViewType_">
<xsl:choose>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>TEXTBOX</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
</xsl:if>
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
<xsl:variable name="sizeViewType_">
<xsl:choose>
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>DROPDOWN</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
<xsl:variable name="periInst_" select="@INSTANCE"/>
<xsl:variable name="periMod_" select="key('G_MAP_MODULES', $periInst_)"/>
<xsl:variable name="periModClass_" select="$periMod_/@MODCLASS"/>
<xsl:variable name="periValidBifs_" select="key('G_MAP_ALL_BIFS', $periInst_)[not(@BUSNAME = '__NOC__')]"/>
<xsl:variable name="periMemMapSlvs_" select="$periMod_/MEMORYMAP/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE"/>
<xsl:variable name="periMemMapBifs_">
<xsl:for-each select="$periMemMapSlvs_">
<xsl:variable name="periSlvBifName_" select="@BUSINTERFACE"/>
<xsl:if test="$periValidBifs_[(@NAME = $periSlvBifName_)]">
<xsl:variable name="periBif_" select="$periValidBifs_[(@NAME = $periSlvBifName_)]"/>
<xsl:variable name="periBifName_" select="$periBif_/@NAME"/>
<xsl:variable name="periBifBus_" select="$periBif_/@BUSNAME"/>
<!--
<xsl:message> Slv Bif <xsl:value-of select="$periBifName_"/> = <xsl:value-of select="$periBifBus_"/></xsl:message>
-->
<MMBIF NAME="{$periBifName_}" BUS="{$periBifBus_}"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="num_of_periMemMapBifs_" select="count(exsl:node-set($periMemMapBifs_)/MMBIF)"/>
<!--
<xsl:message> Total num of slv bifs <xsl:value-of select="$num_of_periMemMapBifs_"/> </xsl:message>
<xsl:message> </xsl:message>
-->
<xsl:variable name="valid_bifNames_">
<xsl:for-each select="exsl:node-set($periMemMapBifs_)/MMBIF">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="$bifName_"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="valid_busNames_">
<xsl:for-each select="exsl:node-set($periMemMapBifs_)/MMBIF">
<xsl:variable name="busName_" select="@BUS"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="$busName_"/>
</xsl:for-each>
</xsl:variable>
<!--
<xsl:message> Mod Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
<xsl:message> Mod Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
<xsl:message>Slv Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
<xsl:variable name="modBifs_" select="$modInst_/BUSINTERFACES"/>
<xsl:if test="$periValidBifs_[(@NAME = $bifName_)]">
<xsl:variable name="busName_" select="$periValidBifs_[(@NAME = $bifName_)]/@BUSNAME"/>
<xsl:message>Mod Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="$bifName_"/>
</xsl:if>
-->
<!--
<xsl:message>Module Instances <xsl:value-of select="$instName_"/> </xsl:message>
<xsl:message>Base Name <xsl:value-of select="$baseName_"/> </xsl:message>
<xsl:message>High Name <xsl:value-of select="$highName_"/> </xsl:message>
<xsl:message>Valid bif names <xsl:value-of select="$valid_bifNames_"/> </xsl:message>
<xsl:message>Valid bif names <xsl:value-of select="$valid_bifNames_"/> </xsl:message>
<xsl:message>Valid bus names <xsl:value-of select="$valid_busNames_"/> </xsl:message>
-->
<xsl:variable name="var_bifNames_">
<xsl:choose>
<xsl:when test="string-length($valid_bifNames_) &lt; 1">
<xsl:choose>
<xsl:when test="$periModClass_ = 'BUS'">Not Applicable</xsl:when>
<xsl:otherwise>Not Connected</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$var_bifNames_}"/>
<xsl:if test="(($num_of_periMemMapBifs_ &gt; 0) and (string-length($valid_busNames_) &gt; 0))">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$valid_busNames_}"/>
</xsl:if>
</SET> <!-- End of one processor memory range row -->
</xsl:for-each> <!-- end of processor memory ranges loop -->
</xsl:element><!-- End of Processor memory map set -->
</xsl:for-each> <!-- end of processor module address space loop -->
<!--
Add branch for valid address that are not part of a processor's
memory map. Usually modules that have just been added, but have
not been connected to a bus yet.
-->
<xsl:variable name="nonProcAddresses_">
<!-- Add a dummy non proc as a place holder. Otherwise the exsl:node-set test
Below complains if the variable is completely empty
-->
<NONPROCADDRESS INSTANCE="__DUMMY__" BASENAME="__DUMMY__" HIGHNAME="__DUMMY__" BASEDECIMAL="__DUMMY__"/>
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ACCESSROUTE)]))]">
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
<NONPROCADDRESS INSTANCE="{$nonProcInst_}" BASENAME="{$baseName_}" HIGHNAME="{$highName_}" BASEDECIMAL="{$baseDecimal_}"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<!-- Add unmapped addresses -->
<xsl:variable name="hasUnMappedAddress">
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]">
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])"><xsl:value-of select="$nonProcInst_"/></xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:if test="string-length($hasUnMappedAddress) &gt; 1">
<SET ID="Unmapped Addresses" CLASS="MODULE" ROW_INDEX="{$G_NUM_OF_PROCS_W_ADDRS}">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="Unmapped Addresses"/>
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]/MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="nonProcMod_" select="../.."/>
<xsl:variable name="nonProcMMap_" select="$nonProcMod_/MEMORYMAP"/>
<xsl:variable name="instance_" select="$nonProcMod_/@INSTANCE"/>
<xsl:variable name="row_index_" select="position()"/>
<xsl:variable name="instName_" select="$nonProcMod_/@INSTANCE"/>
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
<xsl:for-each select="$nonProcMMap_/MEMRANGE[((@BASENAME = $baseName_) and (@HIGHNAME = $highName_))]">
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $instName_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
<xsl:variable name="addr_id_"><xsl:value-of select="$baseName_"/>:<xsl:value-of select="$highName_"/></xsl:variable>
<xsl:variable name="set_id_"><xsl:value-of select="$instName_"/>:<xsl:value-of select="$addr_id_"/></xsl:variable>
<xsl:variable name="inst_modtype_" select="$nonProcMod_/@MODTYPE"/>
<xsl:variable name="inst_viewicon_" select="$nonProcMod_/LICENSEINFO/@ICON_NAME"/>
<xsl:variable name="inst_modclass_" select="$nonProcMod_/@MODCLASS"/>
<xsl:variable name="inst_hwversion_" select="$nonProcMod_/@HWVERSION"/>
<SET ID="{$set_id_}" CLASS="ADDRESS">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$instance_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$inst_modtype_}" VIEWICON="{$inst_viewicon_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$inst_hwversion_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
<xsl:variable name="is_locked_">
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="baseAddrViewType_">
<xsl:choose>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>TEXTBOX</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
</xsl:if>
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
</xsl:if>
<!--
Lock, DCache and ICache removed in 11.1
<xsl:if test="(@IS_CACHEABLE = 'TRUE')">
<xsl:variable name="is_dcached_">
<xsl:if test="(@IS_DCACHED = 'TRUE')">TRUE</xsl:if>
<xsl:if test="(not(@IS_DCACHED) or not(@IS_DCACHED = 'TRUE'))">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="is_icached_">
<xsl:if test="(@IS_ICACHED = 'TRUE')">TRUE</xsl:if>
<xsl:if test="(not(@IS_ICACHED) or not(@IS_ICACHED = 'TRUE'))">FALSE</xsl:if>
</xsl:variable>
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="DCache" NAME="IS_DCACHED" VALUE="{$is_dcached_}"/>
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="ICache" NAME="IS_ICACHED" VALUE="{$is_icached_}"/>
</xsl:if>
-->
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
<xsl:variable name="sizeViewType_">
<xsl:choose>
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>DROPDOWN</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
<xsl:variable name="valid_bifNames_">
<xsl:choose>
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
<!-- <xsl:message>Bif Name <xsl:value-of select="$bifName_"/> </xsl:message> -->
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="@BUSINTERFACE"/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="@NAME"/>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="def_bifNames_">
<xsl:choose>
<xsl:when test="(string-length($valid_bifNames_) &lt; 1) or ((string-length($valid_bifNames_) = 1) and ($valid_bifNames_ = ':'))">Not Connected</xsl:when>
<xsl:when test="starts-with($valid_bifNames_,':')"><xsl:value-of select="substring-after($valid_bifNames_,':')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$def_bifNames_}"/>
<xsl:choose>
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
<xsl:variable name="slvBifName_" select="@BUSINTERFACE"/>
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
<xsl:variable name="slvBifName_" select="@NAME"/>
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</SET> <!-- End of one non processor memory range row -->
</xsl:if>
</xsl:for-each> <!-- end of non processor memory ranges loop -->
</xsl:for-each> <!-- end of NONPROCADDRESS loop -->
</SET> <!-- End of non processor tree branch -->
</xsl:if> <!-- End of test to see if we have and non processor mapped address -->
</xsl:template>
<xsl:template name="__WRITE_VIEW_ADDRESS__">
<!--
-->
<xsl:for-each select="$G_SYS_MODS/MODULE[((@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ACCESSROUTE)]))]">
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
<xsl:variable name="procInst_" select="@INSTANCE"/>
<xsl:variable name="modClass_" select="@MODCLASS"/>
<xsl:variable name="procInstHdrVal_"><xsl:value-of select="$procInst_"/>'s Address Map</xsl:variable>
<xsl:variable name="procInstRowIdx_" select="position() - 1"/>
<xsl:variable name="modInstance_" select="self::node()"/>
<SET ID="{$procInst_}" CLASS="MODULE" ROW_INDEX="{$procInstRowIdx_}">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$procInstHdrVal_}"/>
<xsl:for-each select="$modInstance_/MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@MEMTYPE = 'BRIDGE')))]">
<xsl:sort data-type="number" select="@BASEDECIMAL" order="ascending"/>
<xsl:variable name="addr_id_"><xsl:value-of select="@BASENAME"/>:<xsl:value-of select="@HIGHNAME"/></xsl:variable>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:if test="$G_DEBUG='TRUE'">
<xsl:message>ADDRESS ID <xsl:value-of select="$addr_id_"/></xsl:message>
</xsl:if>
<xsl:variable name="set_id_">
<xsl:if test="(@INSTANCE)">
<xsl:value-of select="$procInst_"/>.<xsl:value-of select="@INSTANCE"/>:<xsl:value-of select="$addr_id_"/>
</xsl:if>
<xsl:if test="not(@INSTANCE)">
<xsl:value-of select="$procInst_"/>:<xsl:value-of select="$addr_id_"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="procAddrRowIdx_" select="position() - 1"/>
<SET ID="{$set_id_}" CLASS="ADDRESS" ROW_INDEX="{$procAddrRowIdx_}">
<xsl:if test="(@INSTANCE)">
<xsl:variable name="instance_" select="@INSTANCE"/>
<xsl:variable name="subInstance_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $instance_)]"/>
<xsl:variable name="inst_modtype_" select="$subInstance_/@MODTYPE"/>
<xsl:variable name="inst_viewicon_" select="$subInstance_/LICENSEINFO/@ICON_NAME"/>
<xsl:variable name="inst_hwversion_" select="$subInstance_/@HWVERSION"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$instance_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$inst_modtype_}" VIEWICON="{$inst_viewicon_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$inst_hwversion_}"/>
</xsl:if>
<xsl:if test="not(@INSTANCE)">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$modInstance_/@INSTANCE}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$modInstance_/@MODTYPE}" VIEWICON="{$modInstance_/LICENSEINFO/@ICON_NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$modInstance_/@HWVERSION}"/>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
<xsl:variable name="instName_">
<xsl:choose>
<xsl:when test="@INSTANCE"><xsl:value-of select="@INSTANCE"/></xsl:when>
<xsl:otherwise>Connected<xsl:value-of select="$modInstance_/@INSTANCE"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--
<xsl:message>INST : <xsl:value-of select="$set_id_"/></xsl:message>
-->
<xsl:variable name="is_locked_">
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="baseAddrViewType_">
<xsl:choose>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>TEXTBOX</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
</xsl:if>
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
<xsl:variable name="sizeViewType_">
<xsl:choose>
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>DROPDOWN</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
<xsl:variable name="modInst_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $instName_)]"/>
<xsl:variable name="modMemMap_" select="$modInst_/MEMORYMAP"/>
<xsl:variable name="valid_bifNames_">
<xsl:choose>
<xsl:when test="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
<!-- <xsl:message>Bif Name <xsl:value-of select="$bifName_"/> </xsl:message> -->
<xsl:variable name="modBifs_" select="$modInst_/BUSINTERFACES"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="@BUSINTERFACE"/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="modBifs_" select="$modInst_"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="@NAME"/>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!--
<xsl:message>Module Instances <xsl:value-of select="$instName_"/> </xsl:message>
<xsl:message>Base Name <xsl:value-of select="$baseName_"/> </xsl:message>
<xsl:message>High Name <xsl:value-of select="$highName_"/> </xsl:message>
<xsl:message>Valid bif names <xsl:value-of select="$valid_bifNames_"/> </xsl:message>
-->
<xsl:variable name="def_bifNames_">
<xsl:choose>
<xsl:when test="string-length($valid_bifNames_) &lt; 1">
<xsl:choose>
<xsl:when test="$modClass_ = 'BUS'">Not Applicable</xsl:when>
<xsl:otherwise>Not Connected</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="starts-with($valid_bifNames_,':')"><xsl:value-of select="substring-after($valid_bifNames_,':')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$def_bifNames_}"/>
<xsl:choose>
<xsl:when test="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
<xsl:variable name="modBifs_" select="$modInst_/BUSINTERFACES"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:variable name="numBifs_" select="count($modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))])"/>
<xsl:if test="((position() = 1) or ($numBifs_ = 1))">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$busName_}"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="modBifs_" select="$modInst_"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:variable name="numBifs_" select="count($modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))])"/>
<xsl:if test="((position() = 1) or ($numBifs_ = 1))">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$busName_}"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
<!--
-->
</SET> <!-- End of one processor memory range row -->
</xsl:for-each> <!-- end of processor memory ranges loop -->
</SET>
</xsl:for-each> <!-- end of processor module address space loop -->
<!--
Add branch for valid address that are not part of a processor's
memory map. Usually modules that have just been added, but have
not been connected to a bus yet.
-->
<xsl:variable name="nonProcAddresses_">
<!-- Add a dummy non proc as a place holder. Otherwise the exsl:node-set test
Below complains if the variable is completely empty
-->
<NONPROCADDRESS INSTANCE="__DUMMY__" BASENAME="__DUMMY__" HIGHNAME="__DUMMY__" BASEDECIMAL="__DUMMY__"/>
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and ACCESSROUTE)]))]">
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
<NONPROCADDRESS INSTANCE="{$nonProcInst_}" BASENAME="{$baseName_}" HIGHNAME="{$highName_}" BASEDECIMAL="{$baseDecimal_}"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<!-- Add unmapped addresses -->
<xsl:variable name="hasUnMappedAddress">
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]">
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])"><xsl:value-of select="$nonProcInst_"/></xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:if test="string-length($hasUnMappedAddress) &gt; 1">
<SET ID="Unmapped Addresses" CLASS="MODULE" ROW_INDEX="{$G_NUM_OF_PROCS_W_ADDRS}">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="Unmapped Addresses"/>
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]/MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="nonProcMod_" select="../.."/>
<xsl:variable name="nonProcMMap_" select="$nonProcMod_/MEMORYMAP"/>
<xsl:variable name="instance_" select="$nonProcMod_/@INSTANCE"/>
<xsl:variable name="row_index_" select="position()"/>
<xsl:variable name="instName_" select="$nonProcMod_/@INSTANCE"/>
<xsl:variable name="highName_" select="@HIGHNAME"/>
<xsl:variable name="baseName_" select="@BASENAME"/>
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
<xsl:for-each select="$nonProcMMap_/MEMRANGE[((@BASENAME = $baseName_) and (@HIGHNAME = $highName_))]">
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $instName_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
<xsl:variable name="addr_id_"><xsl:value-of select="$baseName_"/>:<xsl:value-of select="$highName_"/></xsl:variable>
<xsl:variable name="set_id_"><xsl:value-of select="$instName_"/>:<xsl:value-of select="$addr_id_"/></xsl:variable>
<xsl:variable name="inst_modtype_" select="$nonProcMod_/@MODTYPE"/>
<xsl:variable name="inst_viewicon_" select="$nonProcMod_/LICENSEINFO/@ICON_NAME"/>
<xsl:variable name="inst_modclass_" select="$nonProcMod_/@MODCLASS"/>
<xsl:variable name="inst_hwversion_" select="$nonProcMod_/@HWVERSION"/>
<SET ID="{$set_id_}" CLASS="ADDRESS">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$instance_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$inst_modtype_}" VIEWICON="{$inst_viewicon_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$inst_hwversion_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
<xsl:variable name="is_locked_">
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="baseAddrViewType_">
<xsl:choose>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>TEXTBOX</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
</xsl:if>
</xsl:if>
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
</xsl:if>
<!--
Lock, DCache and ICache removed in 11.1
<xsl:if test="(@IS_CACHEABLE = 'TRUE')">
<xsl:variable name="is_dcached_">
<xsl:if test="(@IS_DCACHED = 'TRUE')">TRUE</xsl:if>
<xsl:if test="(not(@IS_DCACHED) or not(@IS_DCACHED = 'TRUE'))">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="is_icached_">
<xsl:if test="(@IS_ICACHED = 'TRUE')">TRUE</xsl:if>
<xsl:if test="(not(@IS_ICACHED) or not(@IS_ICACHED = 'TRUE'))">FALSE</xsl:if>
</xsl:variable>
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="DCache" NAME="IS_DCACHED" VALUE="{$is_dcached_}"/>
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="ICache" NAME="IS_ICACHED" VALUE="{$is_icached_}"/>
</xsl:if>
-->
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
<xsl:variable name="sizeViewType_">
<xsl:choose>
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
<xsl:otherwise>DROPDOWN</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
<xsl:variable name="valid_bifNames_">
<xsl:choose>
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
<!-- <xsl:message>Bif Name <xsl:value-of select="$bifName_"/> </xsl:message> -->
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="@BUSINTERFACE"/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<xsl:if test="position() &gt; 1">:</xsl:if><xsl:value-of select="@NAME"/>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="def_bifNames_">
<xsl:choose>
<xsl:when test="(string-length($valid_bifNames_) &lt; 1) or ((string-length($valid_bifNames_) = 1) and ($valid_bifNames_ = ':'))">Not Connected</xsl:when>
<xsl:when test="starts-with($valid_bifNames_,':')"><xsl:value-of select="substring-after($valid_bifNames_,':')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$def_bifNames_}"/>
<xsl:choose>
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
<xsl:variable name="slvBifName_" select="@BUSINTERFACE"/>
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
<xsl:variable name="slvBifName_" select="@NAME"/>
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</SET> <!-- End of one non processor memory range row -->
</xsl:if>
</xsl:for-each> <!-- end of non processor memory ranges loop -->
</xsl:for-each> <!-- end of NONPROCADDRESS loop -->
</SET> <!-- End of non processor tree branch -->
</xsl:if> <!-- End of test to see if we have and non processor mapped address -->
</xsl:template>
</xsl:stylesheet>

View File

@ -1,631 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE stylesheet [
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
<!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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="exsl dyn math xlink">
<!--
================================================================================
Generate XTeller for BIFS
================================================================================
-->
<xsl:template name="WRITE_VIEW_BIF_TREE">
<xsl:for-each select="$G_SYS_MODS/MODULE">
<xsl:variable name="modRef_" select="self::node()"/>
<xsl:variable name="m_inst_" select="$modRef_/@INSTANCE"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@INSTANCE"/></xsl:attribute>
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
<xsl:choose>
<xsl:when test="$modRef_/@POTENTIAL_INDEX">
<xsl:attribute name="POTENTIAL_INDEX"><xsl:value-of select="$modRef_/@POTENTIAL_INDEX"/></xsl:attribute>
</xsl:when>
<xsl:when test="$modRef_/@CONNECTED_INDEX">
<xsl:attribute name="CONNECTED_INDEX"><xsl:value-of select="$modRef_/@CONNECTED_INDEX"/></xsl:attribute>
</xsl:when>
</xsl:choose>
<!--
CR452579
Can only modify INSTANCE name in Hierarchal view.
-->
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Name" NAME="INSTANCE" VALUE="{@INSTANCE}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{@MODTYPE}" VIEWICON="{LICENSEINFO/@ICON_NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{@HWVERSION}"/>
<xsl:variable name="ipClassification_">
<xsl:call-template name="F_ModClass_To_IpClassification">
<xsl:with-param name="iModClass" select="@MODCLASS"/>
<xsl:with-param name="iBusStd" select="@BUSSTD"/>
</xsl:call-template>
</xsl:variable>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Classification" NAME="IPCLASS" VALUE="{$ipClassification_}"/>
<!-- Write Bus Interfaces here -->
<xsl:for-each select="$G_SYS_MODS"> <!-- To put things in the right scope for the keys below -->
<xsl:variable name="m_bifs_all_" select="key('G_MAP_ALL_BIFS', $m_inst_)"/>
<xsl:for-each select="$m_bifs_all_">
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
<xsl:call-template name="WRITE_VIEW_BIF_TREE_SET">
<xsl:with-param name="iModRef" select="$modRef_"/>
<xsl:with-param name="iBifRef" select="self::node()"/>
</xsl:call-template>
</xsl:for-each> <!-- End of bus interface loop -->
</xsl:for-each>
</xsl:element>
</xsl:for-each> <!-- End module loop -->
</xsl:template>
<xsl:template name="WRITE_VIEW_BIF_TREE_SET">
<xsl:param name="iModRef" select="'__NONE__'"/>
<xsl:param name="iBifRef" select="'__NONE__'"/>
<xsl:param name="iBifCol" select="'__NONE__'"/>
<xsl:element name="SET">
<xsl:if test="not($iBifCol = '__NONE__')">
<xsl:attribute name="RGB_FG"><xsl:value-of select="$iBifCol"/></xsl:attribute>
</xsl:if>
<xsl:attribute name="ID"><xsl:value-of select="$iBifRef/@NAME"/></xsl:attribute>
<xsl:attribute name="CLASS">BUSINTERFACE</xsl:attribute>
<xsl:if test="($iBifRef/@TYPE = 'MONITOR')">
<xsl:choose>
<xsl:when test="($iBifRef/@IS_P2P)">
<xsl:attribute name="IS_P2P_MONITOR">TRUE</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="IS_SHARED_MONITOR">TRUE</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="NAME" NAME="NAME" VALUE="{$iBifRef/@NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Type" NAME="TYPE" VALUE="{$iBifRef/@TYPE}"/>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Standard</xsl:attribute>
<xsl:attribute name="NAME">BUSSTD</xsl:attribute>
<xsl:choose>
<xsl:when test="($iBifRef/@BUSSTD_PSF)">
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSSTD_PSF"/></xsl:attribute>
</xsl:when>
<xsl:when test="($iBifRef/@BUSSTD)">
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSSTD"/></xsl:attribute>
</xsl:when>
<xsl:when test="($iBifRef/@BUS_STD)">
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUS_STD"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VALUE">USER</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:choose>
<xsl:when test="($iBifRef/@TYPE = 'INITIATOR')">
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">TEXTBOX</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSNAME = '__NOC__') or ($iBifRef/@BUSNAME = '') or not($iBifRef/@BUSNAME))">
<xsl:variable name="def_noc_name_"><xsl:value-of select="$iModRef/@INSTANCE"/>_<xsl:value-of select="$iBifRef/@NAME"/></xsl:variable>
<xsl:attribute name="VALUE"><xsl:value-of select="$def_noc_name_"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSNAME"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSNAME = '__NOC__') or ($iBifRef/@BUSNAME = '') or not($iBifRef/@BUSNAME))">
<xsl:element name="VARIABLE">
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSSTD = 'AXI') and ($iBifRef/@TYPE = 'SLAVE') and ($G_HAVE_XB_BUSSES = 'TRUE'))">
<xsl:attribute name="VIEWTYPE">BUTTON</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE">No Connection</xsl:attribute>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="(($iBifRef/@TYPE = 'MONITOR') and ($iBifRef/MONITORS/MONITOR))">
<xsl:variable name="monitorBif_" select="$iBifRef/MONITORS/MONITOR"/>
<xsl:variable name="p2pMonConn_" select="concat($monitorBif_/@INSTANCE,'.',$monitorBif_/@BUSINTERFACE)"/>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$p2pMonConn_"/></xsl:attribute>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:when test="($iBifRef/@TYPE = 'SLAVE')">
<xsl:element name="VARIABLE">
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSSTD = 'AXI') and ($G_HAVE_XB_BUSSES ='TRUE'))">
<xsl:attribute name="VIEWTYPE">BUTTON</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:choose>
<xsl:when test="$iBifRef/MASTERS/MASTER">
<xsl:variable name="mastersList_"><xsl:for-each select="$iBifRef/MASTERS/MASTER"><xsl:if test="position() &gt; 1"> &amp; </xsl:if><xsl:value-of select="concat(@INSTANCE,'.',@BUSINTERFACE)"/></xsl:for-each></xsl:variable>
<xsl:variable name="mastersConn_" select="concat($iBifRef/@BUSNAME,':',$mastersList_)"/>
<xsl:attribute name="VALUE"><xsl:value-of select="$mastersConn_"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSNAME"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSNAME"/></xsl:attribute>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template name="WRITE_VIEW_BIF_FLAT">
<xsl:for-each select="$G_SYS_MODS/MODULE">
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
<xsl:variable name="moduleRef_" select="self::node()"/>
<xsl:variable name="busifsRef_">
<xsl:choose>
<xsl:when test="self::node()/BUSINTERFACES"><xsl:text>$moduleRef_/BUSINTERFACES</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>$moduleRef_</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="dyn:evaluate($busifsRef_)/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
<xsl:call-template name="WRITE_VIEW_BIF_FLAT_SET">
<xsl:with-param name="iModRef" select="$moduleRef_"/>
<xsl:with-param name="iBifRef" select="self::node()"/>
</xsl:call-template>
</xsl:for-each> <!-- End of Bus Interface Loop -->
</xsl:for-each> <!-- End of Module loop -->
</xsl:template>
<xsl:template name="WRITE_VIEW_BIF_FLAT_SET">
<xsl:param name="iModRef" select="'__NONE__'"/>
<xsl:param name="iBifRef" select="'__NONE__'"/>
<xsl:param name="iBifCol" select="'__NONE__'"/>
<xsl:element name="SET">
<xsl:if test="not($iBifCol = '__NONE__')">
<xsl:attribute name="RGB_FG"><xsl:value-of select="$iBifCol"/></xsl:attribute>
</xsl:if>
<!--
<xsl:attribute name="ID"><xsl:value-of select="$iModRef/@INSTANCE"/>.<xsl:value-of select="$iBifRef/@NAME"/></xsl:attribute>
-->
<xsl:attribute name="ID"><xsl:value-of select="$iBifRef/@NAME"/></xsl:attribute>
<xsl:attribute name="CLASS">BUSINTERFACE</xsl:attribute>
<xsl:if test="($iBifRef/@TYPE = 'MONITOR')">
<xsl:choose>
<xsl:when test="($iBifRef/@IS_P2P)">
<xsl:attribute name="IS_P2P_MONITOR">TRUE</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="IS_SHARED_MONITOR">TRUE</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<!-- CR452579 Can only modify INSTANCE name in Hierarchal view. -->
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$iModRef/@INSTANCE}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface" NAME="NAME" VALUE="{$iBifRef/@NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$iModRef/@MODTYPE}" VIEWICON="{$iModRef/LICENSEINFO/@ICON_NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$iModRef/@HWVERSION}"/>
<xsl:variable name="ipClassification_">
<xsl:call-template name="F_ModClass_To_IpClassification">
<xsl:with-param name="iModClass" select="$iModRef/@MODCLASS"/>
<xsl:with-param name="iBusStd" select="$iBifRef/@BUSSTD"/>
</xsl:call-template>
</xsl:variable>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Classification" NAME="IPCLASS" VALUE="{$ipClassification_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Type" NAME="TYPE" VALUE="{$iBifRef/@TYPE}"/>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Standard</xsl:attribute>
<xsl:attribute name="NAME">BUSSTD</xsl:attribute>
<xsl:choose>
<xsl:when test="($iBifRef/@BUS_STD)">
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUS_STD"/></xsl:attribute>
</xsl:when>
<xsl:when test="($iBifRef/@BUSSTD)">
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSSTD"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VALUE">USER</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
<xsl:choose>
<xsl:when test="$iBifRef/@TYPE = 'INITIATOR'">
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">TEXTBOX</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSNAME = '__NOC__') or ($iBifRef/@BUSNAME = '') or not($iBifRef/@BUSNAME))">
<xsl:variable name="def_noc_name_"><xsl:value-of select="$iModRef/@INSTANCE"/>_<xsl:value-of select="$iBifRef/@NAME"/></xsl:variable>
<xsl:attribute name="VALUE"><xsl:value-of select="$def_noc_name_"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSNAME"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSNAME = '__NOC__') or ($iBifRef/@BUSNAME = '') or not($iBifRef/@BUSNAME))">
<xsl:element name="VARIABLE">
<xsl:choose>
<xsl:when test="(($iBifRef/@BUSSTD = 'AXI') and ($iBifRef/@TYPE = 'SLAVE') and ($G_HAVE_XB_BUSSES = 'TRUE'))">
<xsl:attribute name="VIEWTYPE">BUTTON</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE">No Connection</xsl:attribute>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="(($iBifRef/@TYPE = 'MONITOR') and ($iBifRef/MONITORS/MONITOR))">
<xsl:variable name="monitorBif_" select="$iBifRef/MONITORS/MONITOR"/>
<xsl:variable name="p2pMonConn_" select="concat($monitorBif_/@INSTANCE,'.',$monitorBif_/@BUSINTERFACE)"/>
<!--
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$p2pMonConn_}"/>
-->
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$p2pMonConn_"/></xsl:attribute>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:when test="($iBifRef/@TYPE = 'SLAVE')">
<xsl:element name="VARIABLE">
<xsl:choose>
<xsl:when test="$iBifRef/@BUSSTD = 'AXI' and $G_HAVE_XB_BUSSES ='TRUE'">
<xsl:attribute name="VIEWTYPE">BUTTON</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:choose>
<xsl:when test="$iBifRef/MASTERS/MASTER">
<xsl:variable name="mastersList_"><xsl:for-each select="$iBifRef/MASTERS/MASTER"><xsl:if test="position() &gt; 1"> &amp; </xsl:if><xsl:value-of select="concat(@INSTANCE,'.',@BUSINTERFACE)"/></xsl:for-each></xsl:variable>
<xsl:variable name="mastersConn_" select="concat($iBifRef/@BUSNAME,':',$mastersList_)"/>
<xsl:attribute name="VALUE"><xsl:value-of select="$mastersConn_"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSNAME"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<!--
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$iBifRef/@BUSNAME}"/>
-->
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWTYPE">DROPDOWN</xsl:attribute>
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$iBifRef/@BUSNAME"/></xsl:attribute>
<xsl:if test="$G_ADD_CHOICES = 'TRUE'">
<xsl:call-template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:with-param name="iModRef" select="$iModRef"/>
<xsl:with-param name="iBifRef" select="$iBifRef"/>
</xsl:call-template>
</xsl:if>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template name="WRITE_VIEW_BIF_BUSNAME_CHOICES">
<xsl:param name="iModRef" select="None"/>
<xsl:param name="iBifRef" select="None"/>
<xsl:variable name="b_bus_" select="$iBifRef/@BUSNAME"/>
<xsl:variable name="b_name_" select="$iBifRef/@NAME"/>
<xsl:variable name="b_type_" select="$iBifRef/@TYPE"/>
<xsl:variable name="b_bstd_" select="$iBifRef/@BUSSTD"/>
<xsl:variable name="b_bstd_psf_" select="$iBifRef/@BUSSTD_PSF"/>
<xsl:variable name="b_protocol_" select="$iBifRef/@PROTOCOL"/>
<xsl:element name="CHOICES">
<xsl:choose>
<xsl:when test="($b_type_ = 'INITIATOR')">
<xsl:variable name="initiator_busName_">
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')"><xsl:value-of select="concat($iModRef/@INSTANCE,'_',$b_name_)"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$b_bus_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<CHOICE NAME="{$initiator_busName_}"/>
</xsl:when>
<xsl:when test="(($b_type_ = 'MASTER') or ($b_type_ = 'SLAVE') or ($b_type_ = 'MASTER_SLAVE'))">
<CHOICE NAME="No Connection"/>
<xsl:for-each select="$G_SYS_MODS"> <!-- To set correct scope for KEY functions below -->
<xsl:if test="not(($b_bstd_ = 'AXI') and ($b_type_ = 'SLAVE'))">
<CHOICE NAME="New Connection"/>
</xsl:if>
<xsl:for-each select="key('G_MAP_BUSSES',$b_bstd_)">
<xsl:variable name="busName_" select="@INSTANCE"/>
<xsl:choose>
<!-- CR#590473 This was setting wrong choices filled up-->
<!--xsl:when test="(($b_type_ = 'SLAVE') and (@IS_CROSSBAR) and $iBifRef/@PROTOCOL)">
<xsl:for-each select="key('G_MAP_MST_BIFS',$busName_)[(@PROTOCOL = $b_protocol_)]">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="insName_" select="../../@INSTANCE"/>
<xsl:variable name="xb_slave_busName_" select="concat($busName_,':',$insName_,'.',$bifName_)"/>
<CHOICE NAME="{$xb_slave_busName_}"/>
</xsl:for-each>
</xsl:when-->
<xsl:when test="($b_type_ = 'SLAVE') and (@IS_CROSSBAR)">
<xsl:for-each select="key('G_MAP_MST_BIFS',$busName_)">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="insName_" select="../../@INSTANCE"/>
<xsl:variable name="xb_slave_busName_" select="concat($busName_,':',$insName_,'.',$bifName_)"/>
<CHOICE NAME="{$xb_slave_busName_}"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<CHOICE NAME="{$busName_}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
<xsl:when test="($b_type_ = 'TARGET')">
<CHOICE NAME="No Connection"/>
<xsl:for-each select="$G_SYS_MODS"> <!-- To set correct scope for KEY functions below -->
<xsl:variable name="use_bstd_">
<xsl:choose>
<xsl:when test="(($b_bstd_ = 'AXIS') or ($b_bstd_ = 'XIL'))">
<xsl:value-of select="$b_bstd_psf_"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$b_bstd_"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$iBifRef/@PROTOCOL">
<xsl:for-each select="key('G_MAP_P2P_BIFS',$use_bstd_)[(@TYPE = 'INITIATOR') and (@PROTOCOL = $b_protocol_)]">
<xsl:variable name="busName_" select="@BUSNAME"/>
<xsl:choose>
<xsl:when test="($busName_ = '__NOC__')">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="insName_" select="../../@INSTANCE"/>
<xsl:variable name="initiator_busName_" select="concat($insName_,'_',$bifName_)"/>
<CHOICE NAME="{$initiator_busName_}"/>
</xsl:when>
<xsl:otherwise>
<CHOICE NAME="{$busName_}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="key('G_MAP_P2P_BIFS',$use_bstd_)[(@TYPE = 'INITIATOR')]">
<xsl:variable name="busName_" select="@BUSNAME"/>
<xsl:choose>
<xsl:when test="($busName_ = '__NOC__')">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="insName_" select="../../@INSTANCE"/>
<xsl:variable name="initiator_busName_" select="concat($insName_,'_',$bifName_)"/>
<CHOICE NAME="{$initiator_busName_}"/>
</xsl:when>
<xsl:otherwise>
<CHOICE NAME="{$busName_}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
<xsl:when test="($b_type_ = 'MONITOR')">
<CHOICE NAME="No Connection"/>
<xsl:for-each select="$G_SYS_MODS"> <!-- To set correct scope for KEY functions below -->
<xsl:choose>
<xsl:when test="($iBifRef/@IS_P2P = 'TRUE')">
<xsl:for-each select="$G_SYS_MODS"> <!-- To set correct scope for KEY functions below -->
<xsl:variable name="use_bstd_">
<xsl:choose>
<xsl:when test="(($b_bstd_ = 'AXIS') or ($b_bstd_ = 'XIL'))">
<xsl:value-of select="$b_bstd_psf_"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$b_bstd_"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- <xsl:message>monitor p2p <xsl:value-of select="count(key('G_MAP_P2P_BIFS',$use_bstd_)[(@TYPE = 'INITIATOR')])"/> </xsl:message> -->
<xsl:for-each select="key('G_MAP_P2P_BIFS',$use_bstd_)[(@TYPE = 'INITIATOR')]">
<xsl:variable name="busName_" select="@BUSNAME"/>
<xsl:choose>
<xsl:when test="($busName_ = '__NOC__')">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="insName_" select="../../@INSTANCE"/>
<xsl:variable name="initiator_busName_" select="concat($insName_,'_',$bifName_)"/>
<CHOICE NAME="{$initiator_busName_}"/>
</xsl:when>
<xsl:otherwise>
<CHOICE NAME="{$busName_}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="key('G_MAP_BUSSES',$b_bstd_)">
<xsl:variable name="busName_" select="@INSTANCE"/>
<xsl:choose>
<xsl:when test="(@IS_CROSSBAR or ($b_bstd_ = 'AXI'))">
<xsl:for-each select="key('G_MAP_MOS_BIFS',$busName_)">
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="insName_" select="../../@INSTANCE"/>
<!--
<xsl:variable name="xb_moni_busName_" select="concat($busName_,':',$insName_,'.',$bifName_)"/>
-->
<xsl:variable name="xb_moni_busName_" select="concat($insName_,'.',$bifName_)"/>
<CHOICE NAME="{$xb_moni_busName_}"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<CHOICE NAME="{$busName_}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,771 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE stylesheet [
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
<!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:dyn="http://exslt.org/dynamic"
xmlns:math="http://exslt.org/math"
xmlns:xlink="http://www.w3.org/1999/xlink"
extension-element-prefixes="math dyn exsl xlink">
<!--
================================================================================
Generate XTeller for PORTS
================================================================================
-->
<xsl:param name="SHOW_IOIF" select="'TRUE'"/>
<xsl:param name="SHOW_BUSIF" select="'TRUE'"/>
<xsl:template name="WRITE_VIEW_PORT_TREE">
<xsl:variable name="num_of_ext_ports_" select="count($G_SYS_EXPS/PORT)"/>
<xsl:if test="$G_DEBUG='TRUE'">
<xsl:message>WRITING PORT in MODE :<xsl:value-of select="@MODE"/></xsl:message>
<!--
<xsl:message>EXTERNAL PORT <xsl:value-of select="$num_of_ext_ports_"/></xsl:message>
-->
</xsl:if>
<xsl:if test="$num_of_ext_ports_ &gt; 0">
<xsl:call-template name="WRITE_VIEW_EXTP_TREE_SET"/>
</xsl:if>
<xsl:for-each select="$G_SYS_MODS/MODULE">
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
<xsl:variable name= "instName_" select="@INSTANCE"/>
<xsl:variable name="moduleRef_" select="self::node()"/>
<xsl:call-template name="WRITE_VIEW_PORT_TREE_SET">
<xsl:with-param name="iModRef" select="$moduleRef_"/>
</xsl:call-template>
</xsl:for-each> <!-- End of MODULES loop -->
</xsl:template>
<xsl:template name="WRITE_VIEW_EXTP_TREE_SET">
<xsl:element name="SET">
<xsl:attribute name="ID">ExternalPorts</xsl:attribute>
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
<xsl:for-each select="$G_SYS_EXPS">
<xsl:element name="VARIABLE">
<xsl:attribute name="NAME">Name</xsl:attribute>
<xsl:attribute name="VALUE">External Ports</xsl:attribute>
<xsl:attribute name="VIEWDISP">Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
</xsl:element>
<xsl:for-each select="PORT">
<xsl:sort select="@NAME" order="ascending"/>
<!--
<xsl:sort data-type="number" select="@MHS_INDEX" order="ascending"/>
-->
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@NAME"/></xsl:attribute>
<xsl:attribute name="CLASS">PORT</xsl:attribute>
<xsl:attribute name="ROW_INDEX"><xsl:value-of select="(position() - 1)"/></xsl:attribute>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{@SIGNAME}" IS_EDITABLE="TRUE"/>
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Name" NAME="NAME" VALUE="{@NAME}"/>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Direction" NAME="DIR" VALUE="{@DIR}"/>
<xsl:if test="(@SIGIS)">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Class" NAME="SIGIS" VALUE="{@SIGIS}"/>
</xsl:if>
<xsl:if test="not(@SIGIS)">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Class" NAME="SIGIS" VALUE="NONE"/>
</xsl:if>
<xsl:choose>
<xsl:when test="@LEFT and @RIGHT">
<xsl:variable name="vecformula_txt_">[<xsl:value-of select="@LEFT"/>:<xsl:value-of select="@RIGHT"/>]</xsl:variable>
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Range" NAME="VECFORMULA" VALUE="{$vecformula_txt_}"/>
</xsl:when>
<xsl:when test="@MSB and @LSB">
<xsl:variable name="vecformula_txt_">[<xsl:value-of select="@MSB"/>:<xsl:value-of select="@LSB"/>]</xsl:variable>
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Range" NAME="VECFORMULA" VALUE="{$vecformula_txt_}"/>
</xsl:when>
<xsl:when test="(not(@MSB) and not(@LSB) and not(@SIGIS = 'CLK') and not(@SIGIS = 'CLOCK') and not(@SIGIS = 'DCMCLK') and not(@SIGIS = 'RST') and not(@SIGIS = 'RESET'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Range" NAME="VECFORMULA" VALUE=""/>
</xsl:when>
</xsl:choose>
<xsl:if test="((@SIGIS = 'CLK') or (@SIGIS = 'CLOCK') or (@SIGIS = 'DCMCLK'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Frequency(Hz)" NAME="CLKFREQUENCY" VALUE="{@CLKFREQUENCY}"/>
</xsl:if>
<xsl:if test="(@SIGIS = 'RST' or @SIGIS = 'RESET')">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Reset Polarity" NAME="RSTPOLARITY" VALUE="{@RSTPOLARITY}"/>
</xsl:if>
<xsl:if test="(@SIGIS = 'INTERRUPT')">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE="{@SENSITIVITY}"/>
</xsl:if>
</xsl:element>
</xsl:for-each> <!-- End of EXTERNAL PORTS loop -->
</xsl:for-each> <!-- End of EXTERNAL PORTS loop -->
</xsl:element> <!-- End of EXTERNAL PORTS SET -->
</xsl:template>
<xsl:template name="WRITE_VIEW_PORT_TREE_SET">
<xsl:param name="iModRef" select="'__NONE__'"/>
<xsl:variable name="m_inst_" select="$iModRef/@INSTANCE"/>
<xsl:variable name="m_class_" select="$iModRef/@MODCLASS"/>
<xsl:variable name="m_type_" select="$iModRef/@MODTYPE"/>
<xsl:variable name="m_type_lc_" select="translate($m_type_,&UPPER2LOWER;)"/>
<xsl:variable name="m_version_" select="$iModRef/@HWVERSION"/>
<xsl:variable name="m_licinfo_" select="$iModRef/LICENSEINFO"/>
<xsl:variable name="m_ports_" select="$iModRef/PORTS"/>
<xsl:variable name="is_axi_interconnect_">
<xsl:choose>
<xsl:when test="$m_type_ = 'axi_interconnect'">TRUE</xsl:when>
<xsl:when test="$m_type_lc_ = 'axi_interconnect'">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="$G_SYS_MODS"> <!-- To put things in the right scope for the keys below -->
<xsl:variable name="m_iofs_all_" select="key('G_MAP_ALL_IOFS', $m_inst_)"/>
<xsl:variable name="m_bifs_all_" select="key('G_MAP_ALL_BIFS', $m_inst_)"/>
<xsl:variable name="m_ports_def_" select="key('G_MAP_DEF_PORTS',$m_inst_)"/>
<xsl:variable name="m_ports_ndf_" select="key('G_MAP_NDF_PORTS',$m_inst_)"/>
<!--
<xsl:if test="$G_DEBUG = 'TRUE'">
<xsl:message><xsl:value-of select="$m_inst_"/> has <xsl:value-of select="count($m_bifs_all_)"/> valid bifs </xsl:message>
<xsl:message><xsl:value-of select="$m_inst_"/> has <xsl:value-of select="count($m_iofs_all_)"/> valid iofs </xsl:message>
<xsl:message><xsl:value-of select="$m_inst_"/> has <xsl:value-of select="count($m_ports_def_)"/> default ports </xsl:message>
<xsl:message><xsl:value-of select="$m_inst_"/> has <xsl:value-of select="count($m_ports_ndf_)"/> non default ports </xsl:message>
<xsl:message></xsl:message>
</xsl:if>
-->
<SET ID="{$m_inst_}" CLASS="MODULE">
<!-- CR452579
Can only modify INSTANCE name in Hierarchal view.
-->
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Name" NAME="INSTANCE" VALUE="{$m_inst_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$m_type_}" VIEWICON="{$m_licinfo_/@ICON_NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$m_version_}"/>
<!--
CR582477,
(among others) special case of axi_interconnect_aclk which is a member of
a bus interface, but should be treated as a non interface port, (i.e. appear even
if the bus interfaces its a member of is invalid.
-->
<xsl:if test="($is_axi_interconnect_ = 'TRUE')">
<!-- do it this way so we also catch the lower-upper case mismatches -->
<xsl:for-each select="key('G_MAP_ALL_PORTS',$m_inst_)[contains(@SIGIS,'CLK')]">
<xsl:variable name="uc_portName_" select="translate(@NAME,&LOWER2UPPER;)"/>
<xsl:if test="($uc_portName_= 'INTERCONNECT_ACLK')">
<!--
<xsl:message><xsl:value-of select="$m_inst_"/>.<xsl:value-of select="@NAME"/> = <xsl:value-of select="@SIGIS"/></xsl:message>
-->
<xsl:variable name="portName_" select="@NAME"/>
<xsl:variable name="portDir_" select="@DIR"/>
<xsl:variable name="portSig_" select="@SIGNAME"/>
<xsl:variable name="portSigIs_">
<xsl:choose>
<xsl:when test="not(@SIGIS)">__NONE__</xsl:when>
<xsl:otherwise><xsl:value-of select="@SIGIS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portSensi_">
<xsl:choose>
<xsl:when test="(@SENSITIVITY)"><xsl:value-of select="@SENSITIVIITY"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portVecFormula_">
<xsl:choose>
<xsl:when test="@VECFORMULA"><xsl:value-of select="@VECFORMULA"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="WRITE_PORT_SET">
<xsl:with-param name="iName" select="$portName_"/>
<xsl:with-param name="iDir" select="$portDir_"/>
<xsl:with-param name="iSigName" select="$portSig_"/>
<xsl:with-param name="iSigIs" select="$portSigIs_"/>
<xsl:with-param name="iSensitivity" select="$portSensi_"/>
<xsl:with-param name="iVecFormula" select="$portVecFormula_"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:if>
<!-- PORTS not part of an INTERFACE -->
<xsl:for-each select="$m_ports_ndf_">
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
<xsl:variable name="uc_portName_" select="translate(@NAME,&LOWER2UPPER;)"/>
<!--
<xsl:if test="((not(@BUS) and not(@IOS)) or (($is_axi_interconnect_ = 'TRUE') and ($uc_portName_= 'INTERCONNECT_ACLK')))">
</xsl:if>
-->
<xsl:variable name="portName_" select="@NAME"/>
<xsl:variable name="portDir_" select="@DIR"/>
<xsl:variable name="portSig_" select="@SIGNAME"/>
<xsl:variable name="portSigIs_">
<xsl:choose>
<xsl:when test="not(@SIGIS)">__NONE__</xsl:when>
<xsl:otherwise><xsl:value-of select="@SIGIS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portSensi_">
<xsl:choose>
<xsl:when test="(@SENSITIVITY)"><xsl:value-of select="@SENSITIVIITY"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portVecFormula_">
<xsl:choose>
<xsl:when test="@VECFORMULA"><xsl:value-of select="@VECFORMULA"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="WRITE_PORT_SET">
<xsl:with-param name="iName" select="$portName_"/>
<xsl:with-param name="iDir" select="$portDir_"/>
<xsl:with-param name="iSigName" select="$portSig_"/>
<xsl:with-param name="iSigIs" select="$portSigIs_"/>
<xsl:with-param name="iSensitivity" select="$portSensi_"/>
<xsl:with-param name="iVecFormula" select="$portVecFormula_"/>
</xsl:call-template>
</xsl:for-each> <!-- END of PORTS NOT OF INTERFACE -->
<!-- PORTS part of a BUSINTERFACE -->
<xsl:if test="$SHOW_BUSIF = 'TRUE'">
<xsl:for-each select="$m_bifs_all_">
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
<xsl:variable name="bifName_" select="@NAME"/>
<xsl:variable name="bifRef_" select="self::node()"/>
<xsl:variable name="portmapsRef_" select="$bifRef_/PORTMAPS"/>
<!--
<xsl:variable name="bpmsCnt_" select="count($bpmsRef_/PORTMAP)"/>
<xsl:message><xsl:value-of select="$instName_"/>.<xsl:value-of select="$bifName_"/>.<xsl:value-of select="$bpmsCnt_"/></xsl:message>
-->
<xsl:variable name="is_external_">
<xsl:call-template name="F_IS_Interface_External">
<xsl:with-param name="iInstRef" select="$iModRef"/>
<xsl:with-param name="iIntfRef" select="$bifRef_"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="bif_connection_">
<xsl:choose>
<xsl:when test="not(@BUSNAME = '__NOC__')">Connected to BUS <xsl:value-of select="@BUSNAME"/></xsl:when>
<xsl:when test="($is_external_ = 'TRUE')">Connected to External Ports</xsl:when>
<xsl:otherwise>Not connected to BUS or External Ports</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- <SET ID="{@NAME}" CLASS="BUSINTERFACE.PORTS"/> -->
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@NAME"/></xsl:attribute>
<xsl:attribute name="CLASS">BUSINTERFACE.PORTS</xsl:attribute>
<xsl:if test="$is_external_ = 'TRUE'">
<xsl:attribute name="IS_EXTERNAL">TRUE</xsl:attribute>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="NAME" NAME="NAME" VALUE="(BUS_IF) {@NAME}"/>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="BUSINTERFACE.CONNECTION" VALUE="{$bif_connection_}"/>
<xsl:for-each select="$portmapsRef_/PORTMAP">
<xsl:variable name="portDir_" select="@DIR"/>
<xsl:variable name="portName_" select="@PHYSICAL"/>
<xsl:if test="$m_ports_def_[(@NAME = $portName_)]"><!-- Only in map if port is valid -->
<!--
<xsl:if test="(not($portRef_/@IS_VALID) or ($portRef_/@IS_VALID = 'TRUE'))"/>
<xsl:sort select="@MPD_INDEX" order="ascending"/>
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
-->
<xsl:variable name="portRef_" select="$m_ports_def_[(@NAME = $portName_)]"/>
<xsl:variable name="portSig_" select="$portRef_/@SIGNAME"/>
<xsl:variable name="portSigIs_">
<xsl:choose>
<xsl:when test="not($portRef_/@SIGIS)">__NONE__</xsl:when>
<xsl:otherwise><xsl:value-of select="$portRef_/@SIGIS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portSensi_">
<xsl:choose>
<xsl:when test="($portRef_/@SENSITIVITY)"><xsl:value-of select="$portRef_/@SENSITIVITY"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portVecFormula_">
<xsl:choose>
<xsl:when test="$portRef_/@VECFORMULA"><xsl:value-of select="$portRef_/@VECFORMULA"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="WRITE_PORT_SET">
<xsl:with-param name="iName" select="$portName_"/>
<xsl:with-param name="iDir" select="$portDir_"/>
<xsl:with-param name="iSigName" select="$portSig_"/>
<xsl:with-param name="iSigIs" select="$portSigIs_"/>
<xsl:with-param name="iSensitivity" select="$portSensi_"/>
<xsl:with-param name="iVecFormula" select="$portVecFormula_"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each> <!-- END BIF PORTMAPS LOOP -->
</xsl:element>
</xsl:for-each> <!-- END BIFS LOOP -->
</xsl:if> <!-- END IF SHOW_BUSIFS -->
<!-- PORTS part of a IOINTERFACE -->
<xsl:if test="$SHOW_IOIF = 'TRUE'">
<xsl:for-each select="$m_iofs_all_[PORTMAPS/PORTMAP]">
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
<xsl:variable name="iifName_" select="@NAME"/>
<xsl:variable name="iifRef_" select="self::node()"/>
<xsl:variable name="portmapsRef_" select="$iifRef_/PORTMAPS"/>
<xsl:variable name="is_external_">
<xsl:call-template name="F_IS_Interface_External">
<xsl:with-param name="iInstRef" select="$iModRef"/>
<xsl:with-param name="iIntfRef" select="$iifRef_"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="iif_connection_">
<xsl:choose>
<xsl:when test="($is_external_ ='TRUE')">Connected to External Ports</xsl:when>
<xsl:otherwise>Not connected to External Ports</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@NAME"/></xsl:attribute>
<xsl:attribute name="CLASS">IOINTERFACE.PORTS</xsl:attribute>
<xsl:if test="$is_external_ = 'TRUE'">
<xsl:attribute name="IS_EXTERNAL">TRUE</xsl:attribute>
</xsl:if>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="NAME" NAME="NAME" VALUE="(IO_IF) {@NAME}"/>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="IOINTERFACE.CONNECTION" VALUE="{$iif_connection_}"/>
<xsl:for-each select="$portmapsRef_/PORTMAP">
<xsl:variable name="portName_" select="@PHYSICAL"/>
<xsl:variable name="portDir_" select="@DIR"/>
<!--
<xsl:variable name="port_is_valid_">
<xsl:choose>
<xsl:when test="$portRef_/@IS_VALID = 'FALSE'">FALSE</xsl:when>
<xsl:otherwise>TRUE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:message><xsl:value-of select="$portName_"/> : <xsl:value-of select="$port_is_valid_"/> : <xsl:value-of select="$portRef_/@IS_VALID"/></xsl:message>
-->
<xsl:if test="$m_ports_def_[(@NAME = $portName_)]"> <!-- Only in map if port is valid -->
<!--
<xsl:message><xsl:value-of select="$portName_"/> </xsl:message>
-->
<xsl:variable name="portRef_" select="$m_ports_def_[(@NAME = $portName_)]"/>
<xsl:variable name="portSig_" select="$portRef_/@SIGNAME"/>
<xsl:variable name="portSigIs_">
<xsl:choose>
<xsl:when test="not($portRef_/@SIGIS)">__NONE__</xsl:when>
<xsl:otherwise><xsl:value-of select="$portRef_/@SIGIS"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portSensi_">
<xsl:choose>
<xsl:when test="($portRef_/@SENSITIVITY)"><xsl:value-of select="$portRef_/@SENSITIVITY"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="portVecFormula_">
<xsl:choose>
<xsl:when test="$portRef_/@VECFORMULA"><xsl:value-of select="$portRef_/@VECFORMULA"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="WRITE_PORT_SET">
<xsl:with-param name="iName" select="$portName_"/>
<xsl:with-param name="iDir" select="$portDir_"/>
<xsl:with-param name="iSigName" select="$portSig_"/>
<xsl:with-param name="iSigIs" select="$portSigIs_"/>
<xsl:with-param name="iSensitivity" select="$portSensi_"/>
<xsl:with-param name="iVecFormula" select="$portVecFormula_"/>
</xsl:call-template>
</xsl:if> <!-- End of port is valid check -->
</xsl:for-each> <!-- END IO INTERFACE PORTMAPS LOOP -->
</xsl:element>
</xsl:for-each> <!-- END IIFS LOOP -->
</xsl:if> <!-- END IF SHOW_IOIFS -->
</SET>
</xsl:for-each> <!-- End of the scoping for key functions-->
</xsl:template>
<xsl:template name="WRITE_VIEW_PORT_FLAT">
<xsl:if test="$G_DEBUG='TRUE'">
<xsl:message>WRITING PORT MODE <xsl:value-of select="@MODE"/></xsl:message>
</xsl:if>
<xsl:variable name="num_of_ext_ports_" select="count($G_SYS_EXPS/PORT)"/>
<xsl:if test="$num_of_ext_ports_ &gt; 0">
<xsl:call-template name="WRITE_VIEW_EXTP_FLAT_SET"/>
</xsl:if>
<xsl:for-each select="$G_SYS_MODS/MODULE">
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
<xsl:variable name="instName_" select="@INSTANCE"/>
<xsl:variable name="moduleRef_" select="self::node()"/>
<xsl:call-template name="WRITE_VIEW_PORT_FLAT_SET">
<xsl:with-param name="iModRef" select="$moduleRef_"/>
</xsl:call-template>
</xsl:for-each> <!-- End of Modules Loop -->
</xsl:template>
<xsl:template name="WRITE_VIEW_EXTP_FLAT_SET">
<xsl:for-each select="$G_SYS_EXPS">
<xsl:for-each select="PORT[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:sort data-type="number" select="@MHS_INDEX" order="ascending"/>
<xsl:variable name="ext_is_interrupt_">
<xsl:if test="@SIGIS = 'INTERRUPT'">TRUE</xsl:if>
<xsl:if test="not(@SIGIS = 'INTERRUPT')">FALSE</xsl:if>
</xsl:variable>
<SET ID="{@NAME}" CLASS="PORT">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="External Ports"/>
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Port Name" NAME="NAME" VALUE="{@NAME}"/>
<xsl:choose>
<xsl:when test="@LEFT and @RIGHT">
<xsl:variable name="vecformula_txt_">[<xsl:value-of select="@LEFT"/>:<xsl:value-of select="@RIGHT"/>]</xsl:variable>
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Range" NAME="VECFORMULA" VALUE="{$vecformula_txt_}"/>
</xsl:when>
<xsl:when test="@MSB and @LSB">
<xsl:variable name="vecformula_txt_">[<xsl:value-of select="@MSB"/>:<xsl:value-of select="@LSB"/>]</xsl:variable>
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Range" NAME="VECFORMULA" VALUE="{$vecformula_txt_}"/>
</xsl:when>
<xsl:when test="(not(@MSB) and not(@LSB) and not(@SIGIS = 'CLK') and not(@SIGIS = 'CLOCK') and not(@SIGIS = 'DCMCLK') and not(@SIGIS = 'RST') and not(@SIGIS = 'RESET'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Range" NAME="VECFORMULA" VALUE=""/>
</xsl:when>
</xsl:choose>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{@SIGNAME}" IS_EDITABLE="TRUE"/>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Direction" NAME="DIR" VALUE="{@DIR}"/>
<xsl:if test="(@SIGIS)">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Class" NAME="SIGIS" VALUE="{@SIGIS}"/>
</xsl:if>
<xsl:if test="not(@SIGIS)">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Class" NAME="SIGIS" VALUE="NONE"/>
</xsl:if>
<xsl:if test="(@SIGIS = 'RST' or @SIGIS = 'RESET')">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Reset Polarity" NAME="RSTPOLARITY" VALUE="{@RSTPOLARITY}"/>
</xsl:if>
<xsl:if test="((@SIGIS = 'CLK') or (@SIGIS = 'CLOCK') or (@SIGIS = 'DCMCLK'))">
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Frequency(Hz)" NAME="CLKFREQUENCY" VALUE="{@CLKFREQUENCY}"/>
</xsl:if>
<!-- SENSITIVITY Settings on Interrupt ports -->
<xsl:choose>
<xsl:when test="((@SIGNAME = '__NOC__') and ($ext_is_interrupt_ = 'TRUE') and not(@SENSITIVITY))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE=""/>
</xsl:when>
<xsl:when test="((@SIGNAME = '__NOC__') and ($ext_is_interrupt_ = 'TRUE') and (@SENSITIVITY))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE="{@SENSITIVITY}"/>
</xsl:when>
<xsl:when test="((@SIGNAME = '__DEF__') and ($ext_is_interrupt_ = 'TRUE') and not(@SENSITIVITY))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE=""/>
</xsl:when>
<xsl:when test="((@SIGNAME = '__DEF__') and ($ext_is_interrupt_ = 'TRUE') and (@SENSITIVITY))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE="{@SENSITIVITY}"/>
</xsl:when>
<xsl:when test="(not(@SIGNAME = '__DEF__') and not(@SIGNAME = '__NOC__') and ($ext_is_interrupt_ = 'TRUE') and not(@SENSITIVITY))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE=""/>
</xsl:when>
<xsl:when test="(not(@SIGNAME = '__DEF__') and not(@SIGNAME = '__NOC__') and ($ext_is_interrupt_ = 'TRUE') and (@SENSITIVITY))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE="{@SENSITIVITY}"/>
</xsl:when>
</xsl:choose>
</SET>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="WRITE_VIEW_PORT_FLAT_SET">
<xsl:param name="iModRef" select="'__NONE__'"/>
<xsl:variable name="m_inst_" select="$iModRef/@INSTANCE"/>
<xsl:variable name="m_class_" select="$iModRef/@MODCLASS"/>
<xsl:variable name="m_type_" select="$iModRef/@MODTYPE"/>
<xsl:variable name="m_type_lc_" select="translate($m_type_,&UPPER2LOWER;)"/>
<xsl:variable name="m_version_" select="$iModRef/@HWVERSION"/>
<xsl:variable name="m_licinfo_" select="$iModRef/LICENSEINFO"/>
<xsl:variable name="is_axi_interconnect_">
<xsl:choose>
<xsl:when test="$m_type_ = 'axi_interconnect'">TRUE</xsl:when>
<xsl:when test="$m_type_lc_ = 'axi_interconnect'">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="$G_SYS_MODS"> <!-- To put things in the right scope for the keys below -->
<xsl:variable name="m_bifs_all_" select="key('G_MAP_ALL_BIFS', $m_inst_)"/>
<xsl:variable name="m_ports_all_" select="key('G_MAP_ALL_PORTS',$m_inst_)"/>
<xsl:if test="$G_DEBUG = 'TRUE'">
<xsl:message><xsl:value-of select="$m_inst_"/> has <xsl:value-of select="count($m_ports_all_)"/> valid ports </xsl:message>
</xsl:if>
<xsl:for-each select="$m_ports_all_">
<xsl:sort data-type="number" select="@MPD_INDEX" order="ascending"/>
<!-- <xsl:message>PORTNM : <xsl:value-of select="@NAME"/></xsl:message> -->
<xsl:variable name="p_nm_uc_" select="translate(@NAME,&LOWER2UPPER;)"/>
<xsl:variable name="p_bif_" select="@BUS"/>
<xsl:variable name="port_is_valid_">
<xsl:choose>
<xsl:when test="@IS_VALID = 'FALSE'">FALSE</xsl:when>
<xsl:when test="(($is_axi_interconnect_ = 'TRUE') and ($p_nm_uc_= 'INTERCONNECT_ACLK'))">TRUE</xsl:when>
<xsl:when test="not(@BUS) or (@BUS and key('G_MAP_ALL_BIFS', $m_inst_)[(@NAME = $p_bif_)])">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$port_is_valid_ = 'TRUE'">
<!--
<xsl:message>PORT <xsl:value-of select="@BUS"/>.<xsl:value-of select="@NAME"/></xsl:message>
-->
<SET ID="{@NAME}" CLASS="PORT">
<!--
CR452579
Can only modify INSTANCE name in Hierarchal view.
-->
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$m_inst_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$m_type_}" VIEWICON="{$m_licinfo_/@ICON_NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$m_version_}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Port Name" NAME="NAME" VALUE="{@NAME}"/>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Direction" NAME="DIR" VALUE="{@DIR}"/>
<xsl:if test="@SIGIS">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Class" NAME="SIGIS" VALUE="{@SIGIS}"/>
</xsl:if>
<xsl:if test="@VECFORMULA">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Range" NAME="VECFORMULA" VALUE="{@VECFORMULA}"/>
</xsl:if>
<xsl:if test="@SENSITIVITY">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE="{@SENSITIVITY}"/>
</xsl:if>
<xsl:variable name="is_interrupt">
<xsl:if test="@SIGIS = 'INTERRUPT'">TRUE</xsl:if>
<xsl:if test="not(@SIGIS = 'INTERRUPT')">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="is_input">
<xsl:choose>
<xsl:when test="(@DIR= 'I')">TRUE</xsl:when>
<xsl:when test="(@DIR= 'IN')">TRUE</xsl:when>
<xsl:when test="(@DIR= 'INPUT')">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- VECFORMULA Settings if Interrupt settings -->
<xsl:choose>
<xsl:when test="((@SIGNAME = '__NOC__') and ($is_interrupt = 'TRUE') and ($is_input = 'TRUE') and not(@VECFORMULA))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="No Connection" IS_INTERRUPT="{$is_interrupt}"/>
</xsl:when>
<xsl:when test="((@SIGNAME = '__NOC__') and ($is_interrupt = 'TRUE') and ($is_input = 'TRUE') and (@VECFORMULA))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="No Connection" IS_INTERRUPT="{$is_interrupt}" IS_RANGE="TRUE"/>
</xsl:when>
<xsl:when test="@SIGNAME = '__NOC__'">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="No Connection" IS_EDITABLE="TRUE"/>
</xsl:when>
<xsl:when test="((@SIGNAME = '__DEF__') and ($is_interrupt = 'TRUE') and ($is_input = 'TRUE') and not(@VECFORMULA))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="Default Connection" IS_INTERRUPT="{$is_interrupt}"/>
</xsl:when>
<xsl:when test="((@SIGNAME = '__DEF__') and ($is_interrupt = 'TRUE') and ($is_input = 'TRUE') and (@VECFORMULA))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="Default Connection" IS_INTERRUPT="{$is_interrupt}" IS_RANGE="TRUE"/>
</xsl:when>
<xsl:when test="@SIGNAME = '__DEF__'">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="Default Connection"/>
</xsl:when>
<xsl:when test="(not(@SIGNAME = '__DEF__') and not(@SIGNAME = '__NOC__') and ($is_input = 'TRUE') and ($is_interrupt = 'TRUE') and (@VECFORMULA))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{@SIGNAME}" IS_INTERRUPT="{$is_interrupt}" IS_RANGE="TRUE"/>
</xsl:when>
<xsl:when test="(not(@SIGNAME = '__DEF__') and not(@SIGNAME = '__NOC__') and ($is_input = 'TRUE') and ($is_interrupt = 'TRUE'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{@SIGNAME}" IS_INTERRUPT="{$is_interrupt}"/>
</xsl:when>
<xsl:otherwise>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{@SIGNAME}" IS_EDITABLE="TRUE"/>
</xsl:otherwise>
</xsl:choose>
</SET>
</xsl:if> <!-- End of port validity check -->
</xsl:for-each> <!-- End of Ports Loop -->
</xsl:for-each>
</xsl:template>
<xsl:template name="WRITE_PORT_SET">
<xsl:param name="iName" select="'__NONE__'"/>
<xsl:param name="iDir" select="'__NONE__'"/>
<xsl:param name="iSigName" select="'__NONE__'"/>
<xsl:param name="iSigIs" select="'__NONE__'"/>
<xsl:param name="iVecFormula" select="'__NONE__'"/>
<xsl:param name="iSensitivity" select="'__NONE__'"/>
<SET ID="{$iName}" CLASS="PORT">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="NAME" NAME="NAME" VALUE="{$iName}"/>
<xsl:variable name="is_interrupt">
<xsl:if test="$iSigIs = 'INTERRUPT'">TRUE</xsl:if>
<xsl:if test="not($iSigIs = 'INTERRUPT')">FALSE</xsl:if>
</xsl:variable>
<xsl:variable name="is_input">
<xsl:choose>
<xsl:when test="($iDir = 'I')">TRUE</xsl:when>
<xsl:when test="($iDir = 'IN')">TRUE</xsl:when>
<xsl:when test="($iDir = 'INPUT')">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="(($iSigName = '__NOC__') and ($is_input = 'TRUE') and ($is_interrupt = 'TRUE') and ($iVecFormula = '__NONE__'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="No Connection" IS_INTERRUPT="{$is_interrupt}"/>
</xsl:when>
<xsl:when test="(($iSigName = '__NOC__') and ($is_input ='TRUE') and ($is_interrupt = 'TRUE') and not($iVecFormula = '__NONE__'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="No Connection" IS_INTERRUPT="{$is_interrupt}" IS_RANGE="TRUE"/>
</xsl:when>
<xsl:when test="$iSigName = '__NOC__'">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="No Connection" IS_EDITABLE="TRUE"/>
</xsl:when>
<xsl:when test="(($iSigName = '__DEF__') and ($is_input = 'TRUE') and ($is_interrupt = 'TRUE') and ($iVecFormula = '__NONE__'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="Default Connection" IS_INTERRUPT="{$is_interrupt}"/>
</xsl:when>
<xsl:when test="(($iSigName = '__DEF__') and ($is_input = 'TRUE') and ($is_interrupt = 'TRUE') and not($iVecFormula = '__NONE__'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="Default Connection" IS_INTERRUPT="{$is_interrupt}" IS_RANGE="TRUE"/>
</xsl:when>
<xsl:when test="($iSigName = '__DEF__')">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="Default Connection"/>
</xsl:when>
<xsl:when test="(not($iSigName = '__DEF__') and not($iSigName = '__NOC__') and ($is_input ='TRUE') and ($is_interrupt = 'TRUE') and not($iVecFormula = '__NONE__'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{$iSigName}" IS_INTERRUPT="{$is_interrupt}" IS_RANGE="TRUE"/>
</xsl:when>
<xsl:when test="(not($iSigName = '__DEF__') and not($iSigName = '__NOC__') and ($is_input ='TRUE') and ($is_interrupt = 'TRUE'))">
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{$iSigName}" IS_INTERRUPT="{$is_interrupt}"/>
</xsl:when>
<xsl:otherwise>
<VARIABLE VIEWTYPE="DROPDOWN" VIEWDISP="Net" NAME="SIGNAME" VALUE="{$iSigName}" IS_EDITABLE="TRUE"/>
</xsl:otherwise>
</xsl:choose>
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Direction" NAME="DIR" VALUE="{$iDir}"/>
<xsl:if test="not($iSigIs = '__NONE__')">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Class" NAME="SIGIS" VALUE="{$iSigIs}"/>
</xsl:if>
<xsl:if test="not($iVecFormula = '__NONE__')">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Range" NAME="VECFORMULA" VALUE="{$iVecFormula}"/>
</xsl:if>
<xsl:if test="not($iSensitivity = '__NONE__')">
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Sensitivity" NAME="SENSITIVITY" VALUE="{$iSensitivity}"/>
</xsl:if>
</SET>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,2 +0,0 @@
<SAV MODE="TREE" VIEW="ADDRESS"/>

View File

@ -1,218 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<report-views version="2.0" >
<header>
<DateModified>2011-08-29T16:09:42</DateModified>
<ModuleName>system</ModuleName>
<SummaryTimeStamp>2011-08-29T16:09:42</SummaryTimeStamp>
<SavedFilePath>C:/E/Dev/FreeRTOS/WorkingCopy/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise/system.xreport</SavedFilePath>
<FilterFile>filter.filter</FilterFile>
<SavedFilterFilePath>C:/E/Dev/FreeRTOS/WorkingCopy/Demo/MicroBlaze_Spartan-6_EthernetFull/PlatformStudioProject/__xps/ise</SavedFilterFilePath>
<DateInitialized>2011-08-28T16:20:32</DateInitialized>
<EnableMessageFiltering>false</EnableMessageFiltering>
</header>
<body>
<viewgroup label="Design Overview" >
<view inputState="Unknown" program="implementation" ShowPartitionData="false" type="FPGASummary" file="implementation\system_summary.html" label="Summary" >
<toc-item title="Design Overview" target="Design Overview" />
<toc-item title="Design Utilization Summary" target="Design Utilization Summary" />
<toc-item title="Performance Summary" target="Performance Summary" />
<toc-item title="Failing Constraints" target="Failing Constraints" />
<toc-item title="Detailed Reports" target="Detailed Reports" />
</view>
<view inputState="Unknown" program="implementation" contextTags="FPGA_ONLY" hidden="true" type="HTML" file="implementation\system_envsettings.html" label="System Settings" />
<view inputState="Translated" program="map" locator="MAP_IOB_TABLE" contextTags="FPGA_ONLY" type="IOBProperties" file="implementation\system_map.xrpt" label="IOB Properties" />
<view inputState="Translated" program="map" contextTags="FPGA_ONLY" hidden="true" type="Control_Sets" file="implementation\system_map.xrpt" label="Control Set Information" />
<view inputState="Translated" program="map" locator="MAP_MODULE_HIERARCHY" contextTags="FPGA_ONLY" type="Module_Utilization" file="implementation\system_map.xrpt" label="Module Level Utilization" />
<view inputState="Mapped" program="par" locator="CONSTRAINT_TABLE" contextTags="FPGA_ONLY" type="ConstraintsData" file="implementation\system.ptwx" label="Timing Constraints" translator="ptwxToTableXML.xslt" />
<view inputState="Mapped" program="par" locator="PAR_PINOUT_BY_PIN_NUMBER" contextTags="FPGA_ONLY" type="PinoutData" file="implementation\system_par.xrpt" label="Pinout Report" />
<view inputState="Mapped" program="par" locator="PAR_CLOCK_TABLE" contextTags="FPGA_ONLY" type="ClocksData" file="implementation\system_par.xrpt" label="Clock Report" />
<view inputState="Mapped" program="par" contextTags="FPGA_ONLY,EDK_OFF" hidden="true" type="Timing_Analyzer" file="implementation\system.twx" label="Static Timing" />
<view inputState="Translated" program="cpldfit" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="EXTERNAL_HTML" file="implementation\system_html/fit/report.htm" label="CPLD Fitter Report" />
<view inputState="Fitted" program="taengine" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="EXTERNAL_HTML" file="implementation\system_html/tim/report.htm" label="CPLD Timing Report" />
</viewgroup>
<viewgroup label="XPS Errors and Warnings" >
<view program="platgen" WrapMessages="true" contextTags="EDK_ON" hidden="false" type="MessageList" hideColumns="Filtered" file="__xps/ise/_xmsgs/platgen.xmsgs" label="Platgen Messages" />
<view program="libgen" WrapMessages="true" contextTags="EDK_ON" hidden="false" type="MessageList" hideColumns="Filtered" file="__xps/ise/_xmsgs/libgen.xmsgs" label="Libgen Messages" />
<view program="simgen" WrapMessages="true" contextTags="EDK_ON" hidden="false" type="MessageList" hideColumns="Filtered" file="__xps/ise/_xmsgs/simgen.xmsgs" label="Simgen Messages" />
<view program="bitinit" WrapMessages="true" contextTags="EDK_ON" hidden="false" type="MessageList" hideColumns="Filtered" file="__xps/ise/_xmsgs/bitinit.xmsgs" label="BitInit Messages" />
</viewgroup>
<viewgroup label="XPS Reports" >
<view inputState="PreSynthesized" program="platgen" contextTags="EDK_ON" hidden="false" type="Secondary_Report" file="platgen.log" label="Platgen Log File" />
<view inputState="PreSynthesized" program="libgen" contextTags="EDK_ON" hidden="false" type="Secondary_Report" file="libgen.log" label="Libgen Log File" />
<view inputState="PreSynthesized" program="simgen" contextTags="EDK_ON" hidden="false" type="Secondary_Report" file="simgen.log" label="Simgen Log File" />
<view inputState="PreSynthesized" program="bitinit" contextTags="EDK_ON" hidden="false" type="Secondary_Report" file="bitinit.log" label="BitInit Log File" />
<view inputState="PreSynthesized" program="system" contextTags="EDK_ON" hidden="false" type="Secondary_Report" file="system.log" label="System Log File" />
</viewgroup>
<viewgroup label="Errors and Warnings" >
<view program="pn" WrapMessages="true" contextTags="EDK_OFF" hidden="true" type="MessageList" hideColumns="Filtered, New" file="implementation\_xmsgs/pn_parser.xmsgs" label="Parser Messages" />
<view program="xst" WrapMessages="true" contextTags="XST_ONLY,EDK_OFF" hidden="true" type="MessageList" hideColumns="Filtered" file="synthesis\_xmsgs/xst.xmsgs" label="Synthesis Messages" />
<view inputState="Synthesized" program="ngdbuild" WrapMessages="true" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/ngdbuild.xmsgs" label="Translation Messages" />
<view inputState="Translated" program="map" WrapMessages="true" contextTags="FPGA_ONLY" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/map.xmsgs" label="Map Messages" />
<view inputState="Mapped" program="par" WrapMessages="true" contextTags="FPGA_ONLY" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/par.xmsgs" label="Place and Route Messages" />
<view inputState="Routed" program="trce" WrapMessages="true" contextTags="FPGA_ONLY" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/trce.xmsgs" label="Timing Messages" />
<view inputState="Routed" program="xpwr" WrapMessages="true" contextTags="EDK_OFF" hidden="true" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/xpwr.xmsgs" label="Power Messages" />
<view inputState="Routed" program="bitgen" WrapMessages="true" contextTags="FPGA_ONLY" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/bitgen.xmsgs" label="Bitgen Messages" />
<view inputState="Translated" program="cpldfit" WrapMessages="true" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/cpldfit.xmsgs" label="Fitter Messages" />
<view inputState="Current" program="implementation" WrapMessages="true" fileList="_xmsgs/xst.xmsgs,_xmsgs/ngdbuild.xmsgs,_xmsgs/map.xmsgs,_xmsgs/par.xmsgs,_xmsgs/trce.xmsgs,_xmsgs/xpwr.xmsgs,_xmsgs/bitgen.xmsgs" contextTags="FPGA_ONLY" type="MessageList" hideColumns="Filtered" file="implementation\_xmsgs/*.xmsgs" label="All Implementation Messages" />
<view inputState="Current" program="fitting" WrapMessages="true" fileList="_xmsgs/xst.xmsgs,_xmsgs/ngdbuild.xmsgs,_xmsgs/cpldfit.xmsgs,_xmsgs/xpwr.xmsgs" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="CPLD_MessageList" hideColumns="Filtered" file="implementation\_xmsgs/*.xmsgs" label="All Implementation Messages (CPLD)" />
</viewgroup>
<viewgroup label="Detailed Reports" >
<view program="xst" contextTags="XST_ONLY,EDK_OFF" hidden="true" type="Report" file="implementation\system.syr" label="Synthesis Report" >
<toc-item title="Top of Report" target="Copyright " searchDir="Forward" />
<toc-item title="Synthesis Options Summary" target=" Synthesis Options Summary " />
<toc-item title="HDL Compilation" target=" HDL Compilation " />
<toc-item title="Design Hierarchy Analysis" target=" Design Hierarchy Analysis " />
<toc-item title="HDL Analysis" target=" HDL Analysis " />
<toc-item title="HDL Parsing" target=" HDL Parsing " />
<toc-item title="HDL Elaboration" target=" HDL Elaboration " />
<toc-item title="HDL Synthesis" target=" HDL Synthesis " />
<toc-item title="HDL Synthesis Report" target="HDL Synthesis Report" searchCnt="2" searchDir="Backward" subItemLevel="1" />
<toc-item title="Advanced HDL Synthesis" target=" Advanced HDL Synthesis " searchDir="Backward" />
<toc-item title="Advanced HDL Synthesis Report" target="Advanced HDL Synthesis Report" subItemLevel="1" />
<toc-item title="Low Level Synthesis" target=" Low Level Synthesis " />
<toc-item title="Partition Report" target=" Partition Report " />
<toc-item title="Final Report" target=" Final Report " />
<toc-item title="Design Summary" target=" Design Summary " />
<toc-item title="Primitive and Black Box Usage" target="Primitive and Black Box Usage:" subItemLevel="1" />
<toc-item title="Device Utilization Summary" target="Device utilization summary:" subItemLevel="1" />
<toc-item title="Partition Resource Summary" target="Partition Resource Summary:" subItemLevel="1" />
<toc-item title="Timing Report" target="Timing Report" subItemLevel="1" />
<toc-item title="Clock Information" target="Clock Information" subItemLevel="2" />
<toc-item title="Asynchronous Control Signals Information" target="Asynchronous Control Signals Information" subItemLevel="2" />
<toc-item title="Timing Summary" target="Timing Summary" subItemLevel="2" />
<toc-item title="Timing Details" target="Timing Details" subItemLevel="2" />
<toc-item title="Cross Clock Domains Report" target="Cross Clock Domains Report:" subItemLevel="2" />
</view>
<view program="synplify" contextTags="SYNPLIFY_ONLY,EDK_OFF" hidden="true" type="Report" file="implementation\system.srr" label="Synplify Report" />
<view program="precision" contextTags="PRECISION_ONLY,EDK_OFF" hidden="true" type="Report" file="implementation\system.prec_log" label="Precision Report" />
<view inputState="Synthesized" program="ngdbuild" type="Report" file="implementation\system.bld" label="Translation Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
<toc-item title="Command Line" target="Command Line:" />
<toc-item title="Partition Status" target="Partition Implementation Status" />
<toc-item title="Final Summary" target="NGDBUILD Design Results Summary:" />
</view>
<view inputState="Translated" program="map" contextTags="FPGA_ONLY" type="Report" file="implementation\system_map.mrp" label="Map Report" >
<toc-item title="Top of Report" target="Release" searchDir="Forward" />
<toc-item title="Section 1: Errors" target="Section 1 -" searchDir="Backward" />
<toc-item title="Section 2: Warnings" target="Section 2 -" searchDir="Backward" />
<toc-item title="Section 3: Infos" target="Section 3 -" searchDir="Backward" />
<toc-item title="Section 4: Removed Logic Summary" target="Section 4 -" searchDir="Backward" />
<toc-item title="Section 5: Removed Logic" target="Section 5 -" searchDir="Backward" />
<toc-item title="Section 6: IOB Properties" target="Section 6 -" searchDir="Backward" />
<toc-item title="Section 7: RPMs" target="Section 7 -" searchDir="Backward" />
<toc-item title="Section 8: Guide Report" target="Section 8 -" searchDir="Backward" />
<toc-item title="Section 9: Area Group and Partition Summary" target="Section 9 -" searchDir="Backward" />
<toc-item title="Section 10: Timing Report" target="Section 10 -" searchDir="Backward" />
<toc-item title="Section 11: Configuration String Details" target="Section 11 -" searchDir="Backward" />
<toc-item title="Section 12: Control Set Information" target="Section 12 -" searchDir="Backward" />
<toc-item title="Section 13: Utilization by Hierarchy" target="Section 13 -" searchDir="Backward" />
</view>
<view inputState="Mapped" program="par" contextTags="FPGA_ONLY" type="Report" file="implementation\system.par" label="Place and Route Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
<toc-item title="Device Utilization" target="Device Utilization Summary:" />
<toc-item title="Router Information" target="Starting Router" />
<toc-item title="Partition Status" target="Partition Implementation Status" />
<toc-item title="Clock Report" target="Generating Clock Report" />
<toc-item title="Timing Results" target="Timing Score:" />
<toc-item title="Final Summary" target="Peak Memory Usage:" />
</view>
<view inputState="Routed" program="trce" contextTags="FPGA_ONLY" type="Report" file="implementation\system.twr" label="Post-PAR Static Timing Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
<toc-item title="Timing Report Description" target="Device,package,speed:" />
<toc-item title="Informational Messages" target="INFO:" />
<toc-item title="Warning Messages" target="WARNING:" />
<toc-item title="Timing Constraints" target="Timing constraint:" />
<toc-item title="Derived Constraint Report" target="Derived Constraint Report" />
<toc-item title="Data Sheet Report" target="Data Sheet report:" />
<toc-item title="Timing Summary" target="Timing summary:" />
<toc-item title="Trace Settings" target="Trace Settings:" />
</view>
<view inputState="Translated" program="cpldfit" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="Report" file="implementation\system.rpt" label="CPLD Fitter Report (Text)" >
<toc-item title="Top of Report" target="cpldfit:" searchDir="Forward" />
<toc-item title="Resources Summary" target="** Mapped Resource Summary **" />
<toc-item title="Pin Resources" target="** Pin Resources **" />
<toc-item title="Global Resources" target="** Global Control Resources **" />
</view>
<view inputState="Fitted" program="taengine" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="Report" file="implementation\system.tim" label="CPLD Timing Report (Text)" >
<toc-item title="Top of Report" target="Performance Summary Report" searchDir="Forward" />
<toc-item title="Performance Summary" target="Performance Summary:" />
</view>
<view inputState="Routed" program="xpwr" contextTags="EDK_OFF" hidden="true" type="Report" file="implementation\system.pwr" label="Power Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
<toc-item title="Power summary" target="Power summary" />
<toc-item title="Thermal summary" target="Thermal summary" />
</view>
<view inputState="Routed" program="bitgen" contextTags="FPGA_ONLY" type="Report" file="implementation\system.bgn" label="Bitgen Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
<toc-item title="Bitgen Options" target="Summary of Bitgen Options:" />
<toc-item title="Final Summary" target="DRC detected" />
</view>
</viewgroup>
<viewgroup label="Secondary Reports" >
<view inputState="PreSynthesized" program="isim" hidden="if_missing" type="Secondary_Report" file="implementation\isim.log" label="ISIM Simulator Log" />
<view inputState="Synthesized" program="netgen" hidden="if_missing" type="Secondary_Report" file="implementation\netgen/synthesis/system_synthesis.nlf" label="Post-Synthesis Simulation Model Report" >
<toc-item title="Top of Report" target="Release" searchDir="Forward" />
</view>
<view inputState="Translated" program="netgen" hidden="if_missing" type="Secondary_Report" file="implementation\netgen/translate/system_translate.nlf" label="Post-Translate Simulation Model Report" >
<toc-item title="Top of Report" target="Release" searchDir="Forward" />
</view>
<view inputState="Translated" program="netgen" hidden="if_missing" type="Secondary_Report" file="implementation\system_tran_fecn.nlf" label="Post-Translate Formality Netlist Report" />
<view inputState="Translated" program="map" contextTags="FPGA_ONLY" hidden="true" type="Secondary_Report" file="implementation\system_map.map" label="Map Log File" >
<toc-item title="Top of Report" target="Release" searchDir="Forward" />
<toc-item title="Design Information" target="Design Information" />
<toc-item title="Design Summary" target="Design Summary" />
</view>
<view inputState="Routed" program="smartxplorer" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\smartxplorer_results/smartxplorer.txt" label="SmartXplorer Report" />
<view inputState="Mapped" program="trce" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system_preroute.twr" label="Post-Map Static Timing Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
<toc-item title="Timing Report Description" target="Device,package,speed:" />
<toc-item title="Informational Messages" target="INFO:" />
<toc-item title="Warning Messages" target="WARNING:" />
<toc-item title="Timing Constraints" target="Timing constraint:" />
<toc-item title="Derived Constraint Report" target="Derived Constraint Report" />
<toc-item title="Data Sheet Report" target="Data Sheet report:" />
<toc-item title="Timing Summary" target="Timing summary:" />
<toc-item title="Trace Settings" target="Trace Settings:" />
</view>
<view inputState="Mapped" program="netgen" hidden="if_missing" type="Secondary_Report" file="implementation\netgen/map/system_map.nlf" label="Post-Map Simulation Model Report" />
<view inputState="Mapped" program="map" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system_map.psr" label="Physical Synthesis Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
</view>
<view inputState="Mapped" program="par" contextTags="FPGA_ONLY" hidden="true" type="Pad_Report" file="implementation\system_pad.txt" label="Pad Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
</view>
<view inputState="Mapped" program="par" contextTags="FPGA_ONLY" hidden="true" type="Secondary_Report" file="implementation\system.unroutes" label="Unroutes Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
</view>
<view inputState="Mapped" program="map" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system_preroute.tsi" label="Post-Map Constraints Interaction Report" >
<toc-item title="Top of Report" target="Release" searchDir="Forward" />
</view>
<view inputState="Mapped" program="par" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system.grf" label="Guide Results Report" />
<view inputState="Routed" program="par" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system.dly" label="Asynchronous Delay Report" />
<view inputState="Routed" program="par" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system.clk_rgn" label="Clock Region Report" />
<view inputState="Routed" program="par" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system.tsi" label="Post-Place and Route Constraints Interaction Report" >
<toc-item title="Top of Report" target="Copyright (c)" searchDir="Forward" />
</view>
<view inputState="Routed" program="netgen" hidden="if_missing" type="Secondary_Report" file="implementation\system_par_fecn.nlf" label="Post-Place and Route Formality Netlist Report" />
<view inputState="Routed" program="netgen" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\netgen/par/system_timesim.nlf" label="Post-Place and Route Simulation Model Report" />
<view inputState="Routed" program="netgen" hidden="if_missing" type="Secondary_Report" file="implementation\system_sta.nlf" label="Primetime Netlist Report" >
<toc-item title="Top of Report" target="Release" searchDir="Forward" />
</view>
<view inputState="Routed" program="ibiswriter" hidden="if_missing" type="Secondary_Report" file="implementation\system.ibs" label="IBIS Model" >
<toc-item title="Top of Report" target="IBIS Models for" searchDir="Forward" />
<toc-item title="Component" target="Component " />
</view>
<view inputState="Routed" program="pin2ucf" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system.lck" label="Back-annotate Pin Report" >
<toc-item title="Top of Report" target="pin2ucf Report File" searchDir="Forward" />
<toc-item title="Constraint Conflicts Information" target="Constraint Conflicts Information" />
</view>
<view inputState="Routed" program="pin2ucf" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\system.lpc" label="Locked Pin Constraints" >
<toc-item title="Top of Report" target="top.lpc" searchDir="Forward" />
<toc-item title="Newly Added Constraints" target="The following constraints were newly added" />
</view>
<view inputState="Translated" program="netgen" contextTags="CPLD_ONLY,EDK_OFF" hidden="true" type="Secondary_Report" file="implementation\netgen/fit/system_timesim.nlf" label="Post-Fit Simulation Model Report" />
<view inputState="Routed" program="bitgen" contextTags="FPGA_ONLY" hidden="if_missing" type="HTML" file="implementation\usage_statistics_webtalk.html" label="WebTalk Report" />
<view inputState="Routed" program="bitgen" contextTags="FPGA_ONLY" hidden="if_missing" type="Secondary_Report" file="implementation\webtalk.log" label="WebTalk Log File" />
</viewgroup>
</body>
</report-views>

View File

@ -1,3 +0,0 @@
MessageCaptureEnabled: TRUE
MessageFilteringEnabled: FALSE
IncrementalMessagingEnabled: TRUE

View File

@ -1,2 +0,0 @@
-p xc6slx45tfgg484-3 -lang vhdl$(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst
ethernet Hardware_Evaluation

View File

@ -1 +0,0 @@
-p spartan6 -lang vhdl$(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst -s isim

View File

@ -1 +0,0 @@
-device xc6slx45tfgg484-3 data/system.ucf 7 0

View File

@ -1 +0,0 @@
-device xc6slx45tfgg484-3 data/system.ucf 0

View File

@ -1,360 +0,0 @@
#
# pin constraints
#
NET CLK_N LOC = "K22" | DIFF_TERM = "TRUE" | IOSTANDARD = "LVDS_25";
NET CLK_P LOC = "K21" | DIFF_TERM = "TRUE" | IOSTANDARD = "LVDS_25";
NET DIP_Switches_4Bits_TRI_I[0] LOC = "C18" | IOSTANDARD = "LVCMOS25";
NET DIP_Switches_4Bits_TRI_I[1] LOC = "Y6" | IOSTANDARD = "LVCMOS25";
NET DIP_Switches_4Bits_TRI_I[2] LOC = "W6" | IOSTANDARD = "LVCMOS25";
NET DIP_Switches_4Bits_TRI_I[3] LOC = "E4" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_MDC LOC = "R19" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_MDIO LOC = "V20" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_MII_TX_CLK LOC = "L20" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_PHY_RST_N LOC = "J22" | IOSTANDARD = "LVCMOS25" | TIG;
NET ETHERNET_RXD[0] LOC = "P19" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[1] LOC = "Y22" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[2] LOC = "Y21" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[3] LOC = "W22" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[4] LOC = "W20" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[5] LOC = "V22" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[6] LOC = "V21" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RXD[7] LOC = "U22" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RX_CLK LOC = "P20" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RX_DV LOC = "T22" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_RX_ER LOC = "U20" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[0] LOC = "U10" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[1] LOC = "T10" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[2] LOC = "AB8" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[3] LOC = "AA8" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[4] LOC = "AB9" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[5] LOC = "Y9" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[6] LOC = "Y12" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TXD[7] LOC = "W12" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TX_CLK LOC = "AB7" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TX_EN LOC = "T8" | IOSTANDARD = "LVCMOS25";
NET ETHERNET_TX_ER LOC = "U8" | IOSTANDARD = "LVCMOS25";
NET LEDs_4Bits_TRI_O[0] LOC = "D17" | IOSTANDARD = "LVCMOS25";
NET LEDs_4Bits_TRI_O[1] LOC = "AB4" | IOSTANDARD = "LVCMOS25";
NET LEDs_4Bits_TRI_O[2] LOC = "D21" | IOSTANDARD = "LVCMOS25";
NET LEDs_4Bits_TRI_O[3] LOC = "W15" | IOSTANDARD = "LVCMOS25";
NET Push_Buttons_4Bits_TRI_I[0] LOC = "F3" | IOSTANDARD = "LVCMOS25";
NET Push_Buttons_4Bits_TRI_I[1] LOC = "G6" | IOSTANDARD = "LVCMOS25";
NET Push_Buttons_4Bits_TRI_I[2] LOC = "F5" | IOSTANDARD = "LVCMOS25";
NET Push_Buttons_4Bits_TRI_I[3] LOC = "C1" | IOSTANDARD = "LVCMOS25";
NET RESET LOC = "H8" | IOSTANDARD = "LVCMOS15" | TIG;
NET RS232_Uart_1_sin LOC = "H17" | IOSTANDARD = "LVCMOS25";
NET RS232_Uart_1_sout LOC = "B21" | IOSTANDARD = "LVCMOS25";
#
# additional constraints
#
NET "CLK" TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 200000 kHz;
###### Soft ETHERNET
# This is a GMII system
# AXI_STR_*_ACLK is not the same as S_AXI_ACLK from clock generator
# Rx/Tx Client clocks are Rx/Tx PHY clocks so CORE Gen PHY clock constraints propagate to Rx/Tx client clock periods
# Time domain crossing constraints (DATAPATHONLY) are set for maximum bus frequency
# allowed by IP which is the maximum option in BSB. For lower bus frequency choice in BSB,
# the constraints are over constrained. Relaxing them for your system may reduce build time.
NET "*ETHERNET*/S_AXI_ACLK" TNM_NET = "axi4lite_clk";
NET "*ETHERNET*/AXI_STR_TXD_ACLK" TNM_NET = "axistream_clk";
NET "*ETHERNET*/AXI_STR_TXC_ACLK" TNM_NET = "axistream_clk";
NET "*ETHERNET*/AXI_STR_RXD_ACLK" TNM_NET = "axistream_clk";
NET "*ETHERNET*/AXI_STR_RXS_ACLK" TNM_NET = "axistream_clk";
############################################################
# Clock Period Constraints #
############################################################
############################################################
# RX Clock period Constraints #
############################################################
# Ethernet GMII PHY-side receive clock
# __________
# | |
# --- GMII_RX_CLK-----| BUFR |---Rx_Client_Clk
# |__________|
#
# Receiver clock period constraints: please do not relax
# Changed NET name
# Changed TNM_NET name from CoreGen name to be consistent in
# EDK constraints
# NET "*/rx_gmii_clk_int" TNM_NET = "clk_rx";
NET "*/GMII_RX_CLK" TNM_NET = "phy_clk_rx";
# Added TIMEGRP for later DATAPATHONLY constraint
TIMEGRP "rx_clock" = "phy_clk_rx";
TIMESPEC "TS_rx_clk" = PERIOD "rx_clock" 8000 ps HIGH 50 %;
############################################################
# TX Clock period Constraints #
############################################################
############################################################
# TIG for BUFGMUX SPEED CLK: please do not edit #
############################################################
# Want to TIG any timing paths to the select of the TX clock BUFGMUXs
# at this point and subsequent constraints can override. MII_TX_CLK
# will remained TIG so that path is not used in any setup/hold timing
# analysis.
# Changed net name in synthesis of axi_ethernet
# PIN "*clock_inst*BUFGMUX*.I?" TNM="clk_bufgmux";
PIN "*I_CLOCK_INST*/*BUFGMUX_SPEED_CLK.I?" TNM="clk_bufgmux";
TIMESPEC "TS_bufgmux" = FROM "async_config" TO "clk_bufgmux" TIG;
###############################################################################
# The following two TimeSpecs are from CoreGen Ethernet Core Example Design UCF
# file. In systems GTX_CLK is driven by clock generator core, then the derived
# period constraint will override these TimeSpecs.
###############################################################################
# Ethernet GTX_CLK high quality 125 MHz reference clock
# __________
# -GTX_CLK------------| |
# | BUFGMUX |---Tx_Client_Clk
# -MII_TX_CLK---------|__________|
#
# Depending on system configuration, the analysis tool may use either gtx_clk
# or tx_client_clk so both nets are used in defining PERIOD constraint and
# TNM_NETS for subsequent constraints.
# The PERIOD constraints may not be analyzed if inferred clock generator
# constraints are generated for the system.
# Transmitter clock period constraints: please do not relax
# Changed NET name
# NET "gtx_clk*" TNM_NET = "clk_gtx";
NET "*/GTX_CLK" TNM_NET = "clk_gtx";
# Added TIMEGRP for later DATAPATHONLY constraint
TIMEGRP "gtx_clock" = "clk_gtx";
TIMESPEC "TS_gtx_clk" = PERIOD "gtx_clock" 8000 ps HIGH 50 %;
# Changed NET name
# Changed TNM_NET name from CoreGen name to be consistent in
# EDK constraints
# NET "*tx_gmii_clk" TNM_NET = "clk_tx_gmii";
NET "*/GMII.tx_gmii_clk_int" TNM_NET = "phy_clk_tx";
TIMEGRP "tx_clock_gmii" = "phy_clk_tx";
TIMESPEC "TS_tx_clk_gmii" = PERIOD "tx_clock_gmii" 8000 ps HIGH 50 %;
############################################################
# Host Clock period Constraint #
############################################################
# Management Clock period constraints: relax as required
# Changed NET name
# NET "host_clk" TNM_NET = "host";
NET "*/S_AXI_ACLK" TNM_NET = "host_clk";
TIMEGRP "host" = "host_clk" EXCEPT "mdio_logic";
TIMESPEC "TS_host_clk" = PERIOD "host" 10000 ps HIGH 50 % PRIORITY 10;
############################################################
# External GMII Constraints #
############################################################
# GMII Transmitter Constraints: place flip-flops in IOB
# Changed 'true' to 'force'
# Shortened INST names to remove internal hierarchy
# INST "*trimac_block*gmii_interface*gmii_txd*" IOB = true;
# INST "*trimac_block*gmii_interface*gmii_tx_en" IOB = true;
# INST "*trimac_block*gmii_interface*gmii_tx_er" IOB = true;
INST "*gmii_txd*" IOB = force;
INST "*gmii_tx_en" IOB = force;
INST "*gmii_tx_er" IOB = force;
# GMII Receiver Constraints: place flip-flops in IOB
# Changed 'true' to 'force'
# Shortened INST names to remove internal hierarchy
# INST "*trimac_block*gmii_interface*rxd_to_mac*" IOB = true;
# INST "*trimac_block*gmii_interface*rx_dv_to_mac" IOB = true;
# INST "*trimac_block*gmii_interface*rx_er_to_mac" IOB = true;
INST "*rxd_to_mac*" IOB = force;
INST "*rx_dv_to_mac" IOB = force;
INST "*rx_er_to_mac" IOB = force;
############################################################
# The following are required to maximize setup/hold #
############################################################
# Changed to add Drive strength and INST Name
# INST "gmii_txd<?>" SLEW = FAST;
# INST "gmii_tx_en" SLEW = FAST;
# INST "gmii_tx_er" SLEW = FAST;
# INST "gmii_tx_clk" SLEW = FAST;
INST "ETHERNET_TXD_?_OBUF" SLEW = FAST;
INST "ETHERNET_TX_EN_OBUF" SLEW = FAST;
INST "ETHERNET_TX_ER_OBUF" SLEW = FAST;
INST "ETHERNET_TX_CLK_OBUF" SLEW = FAST;
############################################################
# GMII: IODELAY Constraints #
############################################################
# Please modify the value of the IDELAY_VALUE
# according to your design.
# For more information on IDELAYCTRL and IODELAY, please
# refer to the Spartan-6 User Guide.
#
INST "*delay_gmii_rx_dv" IDELAY_VALUE = 6;
INST "*delay_gmii_rx_er" IDELAY_VALUE = 6;
INST "*data_bus[0].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[1].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[2].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[3].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[4].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[5].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[6].delay_gmii_rxd" IDELAY_VALUE = 6;
INST "*data_bus[7].delay_gmii_rxd" IDELAY_VALUE = 6;
# Group IODELAY and IDELAYCTRL components to aid placement
# INST "*delay_gmii_rx_clk" IODELAY_GROUP = "grp1";
INST "*delay_gmii_rx_dv" IODELAY_GROUP = "grp1";
INST "*delay_gmii_rx_er" IODELAY_GROUP = "grp1";
INST "*delay_gmii_rxd" IODELAY_GROUP = "grp1";
# INST "*dlyctrl" IODELAY_GROUP = "grp1";
# Changed to let the tools pick the LOC
# INST *trimac_block*clock_inst*BUFGMUX_SPEED_CLK LOC = BUFGMUX_X3Y13;
############################################################
# For Setup and Hold time analysis on GMII inputs #
############################################################
# Identify GMII Rx Pads only.
# This prevents setup/hold analysis being performed on false inputs,
# eg, the configuration_vector inputs.
# Changed to remove TNM and changed INST Names
# INST "gmii_rxd<?>" TNM = IN_GMII;
# INST "gmii_rx_er" TNM = IN_GMII;
# INST "gmii_rx_dv" TNM = IN_GMII;
# Define data valid window with respect to the clock.
# The spec states that, worst case, the data is valid 2 ns before the clock edge.
# The worst case it to provide zero hold time (a 2ns window in total)
# Changed to remove TIMEGRP
# TIMEGRP "IN_GMII" OFFSET = IN 2 ns VALID 2 ns BEFORE "gmii_rx_clk";
# Set to allow for 100ps setup/hold trace delay difference in relation to clock
OFFSET = IN 2.4 ns VALID 2.8 ns BEFORE "ETHERNET_RX_CLK";
############################################################
# Crossing of Clock Domain Constraints: please do not edit #
############################################################
# Flow Control logic reclocking - control signal is synchronised
# Changed net name in synthesis of axi_ethernet
# INST "*trimac_core*FLOW?RX_PAUSE?PAUSE_REQ_TO_TX" TNM="flow_rx_to_tx";
# INST "*trimac_core*FLOW?RX_PAUSE?PAUSE_VALUE_TO_TX*" TNM="flow_rx_to_tx";
INST "*/I_FLOW/I_RX_PAUSE/PAUSE_REQ_TO_TX" TNM="flow_rx_to_tx";
INST "*/I_FLOW/I_RX_PAUSE/PAUSE_VALUE_TO_TX*" TNM="flow_rx_to_tx";
TIMESPEC "TS_flow_rx_to_tx" = FROM "flow_rx_to_tx" TO phy_clk_tx 8000 ps DATAPATHONLY;
# Generate a group of all flops NOT in the host clock domain
TIMEGRP "all_ffs" = FFS;
TIMEGRP "ffs_except_host" = "all_ffs" EXCEPT "host";
# Configuration Register reclocking
# Changed net name in synthesis of axi_ethernet
# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?RX0_OUT*" TNM="async_config";
# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?RX1_OUT*" TNM="async_config";
# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?FC_OUT_29" TNM="async_config";
INST "*/MANIFGEN.I_MANAGEN/I_CONF/RX0_OUT*" TNM="async_config";
INST "*/MANIFGEN.I_MANAGEN/I_CONF/RX1_OUT*" TNM="async_config";
INST "*/MANIFGEN.I_MANAGEN/I_CONF/FC_OUT_29" TNM="async_config";
# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?TX_OUT*" TNM="async_config";
# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?FC_OUT_30" TNM="async_config";
INST "*/MANIFGEN.I_MANAGEN/I_CONF/TX_OUT*" TNM="async_config";
INST "*/MANIFGEN.I_MANAGEN/I_CONF/FC_OUT_30" TNM="async_config";
# Speed change config
# Changed net name in synthesis of axi_ethernet
# INST "*trimac_core*MANIFGEN?MANAGEN?CONF?CNFG_SPEED*" TNM="async_config";
# INST "*trimac_core*SPEED_IS*" TNM="async_config";
INST "*/MANIFGEN.I_MANAGEN/I_CONF/CNFG_SPEED*" TNM="async_config";
INST "*/I_?XGEN/*SPEED*" TNM="async_config";
# Changed to comment out.
# In BSB systems the Host_clk = S_AXI_ACLK. Since the CORE Gen TIG'd constraints below
# are affecting axi_ethernet DATAPATHONLY constraints above (at start of Soft_Ethernet_MAC constraints)
# these paths are commented out in favor of using the DATAPATHONLY constraints. The constraints are:
# "TS_axi4lite_clk_clk_2_TX_CLIENT_CLK" and "TS_TX_CLIENT_CLK_2_axi4lite_clk_clk"
# TIMESPEC "TS_host_clk_to_rx_clk" = FROM "host" TO "rx_clock" TIG;
# TIMESPEC "TS_host_clk_to_tx_clk" = FROM "host" TO "tx_clock_gmii" TIG;
TIMESPEC "TS_config_to_all" = FROM "async_config" TO "ffs_except_host" TIG;
# Address filter specific cross clocking
# Changed net name in synthesis of axi_ethernet
# INST "*trimac_core*addr_filter_top/dynamic_af_gen.dynamic_config/unicast_addr_*" TNM="addr_config_to_rx";
INST "*/I_ADDR_FILTER_TOP/dynamic_af_gen.I_DYNAMIC_CONFIG/unicast_addr_*" TNM="addr_config_to_rx";
TIMESPEC "TS_addr_config_to_rx" = FROM "addr_config_to_rx" TO "ffs_except_host" TIG;
############################################################
# Ignore paths to resync flops #
############################################################
# Changed to replace TIG with DATAPATHONLY constraints
# INST "*data_sync" TNM = "resync_reg";
# TIMESPEC "ts_resync_flops" = TO "resync_reg" TIG;
######################################################################
# MDIO Constraints: please do not edit unless TS_host_clk is relaxed #
# in which case the multiplier needs to be adjusted to give the #
# required 400ns (or faster) #
######################################################################
# Place the MDIO logic in it's own timing groups
# Changed net name in synthesis of axi_ethernet
# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?ENABLE_REG" TNM = "mdio_logic";
# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?READY_INT" TNM = "mdio_logic";
# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?STATE_COUNT*" TNM = FFS "mdio_logic";
# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?MDIO_TRISTATE" TNM = "mdio_logic";
# INST "*trimac_core*MANIFGEN?MANAGEN?PHY?MDIO_OUT" TNM = "mdio_logic";
INST "*/I_RXGEN/ENABLE_REG" TNM = "mdio_logic";
INST "*/MANIFGEN.I_MANAGEN/MIIM_READY_INT" TNM = "mdio_logic";
INST "*/MANIFGEN.I_MANAGEN/I_PHY/STATE_COUNT*" TNM = FFS "mdio_logic";
INST "*/MANIFGEN.I_MANAGEN/I_PHY/MDIO_TRISTATE" TNM = "mdio_logic";
INST "*/MANIFGEN.I_MANAGEN/I_PHY/MDIO_OUT" TNM = "mdio_logic";
# The MDIO logic is constrained to a 400ns period. this is generated by relating the required
# period to that specified for host_clk. This ensures the two clocks are related timed
# correctly.
TIMESPEC "TS_mdio" = PERIOD "mdio_logic" "TS_host_clk" * 40 PRIORITY 0;
############################################################
# Crossing of Clock Domain Constraints: please do not edit #
# In addition to CoreGen constraints #
############################################################
# The following TimeSpecs are required only when AXILite clock differs from AXI-Stream clock
# Data path timing depends on the destination clock period
TIMESPEC "TS_axistreamclks_2_axi4liteclks" = FROM axistream_clk TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz
TIMESPEC "TS_axi4liteclks_2_axistreamclks" = FROM axi4lite_clk TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz
# TNM_NET phy_clk_rx is rx_client_clk
# TIMESPECs for AXI streaming clock crossing to/from rx_client_clk
TIMESPEC "TS_axistreamclks_2_RX_CLIENT_CLK" = FROM axistream_clk TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz
TIMESPEC "TS_RX_CLIENT_CLK_2_axistreamclks" = FROM phy_clk_rx TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz
# TIMESPECs for AXI-Lite clock crossing to/from tx_client_clk
TIMESPEC "TS_axi4liteclks_2_RX_CLIENT_CLK" = FROM axi4lite_clk TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz
TIMESPEC "TS_RX_CLIENT_CLK_2_axi4liteclks" = FROM phy_clk_rx TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz
# Depending on system configuration, the analysis tool may use either TNM_NET clk_gtx
# or TNM_NET phy_clk_tx so only one set will be analyzed
# TNM_NET phy_clk_tx is tx_client_clk
# TIMESPECs for AXI streaming clock crossing to/from tx_client_clk
TIMESPEC "TS_axistreamclks_2_TX_CLIENT_CLK" = FROM axistream_clk TO phy_clk_tx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz
TIMESPEC "TS_TX_CLIENT_CLK_2_axistreamclks" = FROM phy_clk_tx TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz
# TIMESPECs for AXI-Lite clock crossing to/from tx_client_clk
TIMESPEC "TS_axi4liteclks_2_TX_CLIENT_CLK" = FROM axi4lite_clk TO phy_clk_tx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz
TIMESPEC "TS_TX_CLIENT_CLK_2_axi4liteclks" = FROM phy_clk_tx TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz
# TNM_NET clk_gtx is */GTX_CLK
# TIMESPECs for AXI Streaming clock crossing to/from */GTX_CLK
TIMESPEC "TS_axistreamclks_2_GTX_CLK" = FROM axistream_clk TO clk_gtx 8000 ps DATAPATHONLY; #assumes clk_gtx <= 125 MHz
TIMESPEC "TS_GTX_CLK_2_axistreamclks" = FROM clk_gtx TO axistream_clk 8333 ps DATAPATHONLY; #assumes axistream_clk <= 120 MHz
# TIMESPECs for AXI-Lite clock crossing to/from */GTX_CLK
TIMESPEC "TS_axi4lite_clk_2_GTX_CLK" = FROM axi4lite_clk TO clk_gtx 8000 ps DATAPATHONLY; #assumes clk_gtx <= 125 MHz
TIMESPEC "TS_GTX_CLK_2_axi4lite_clk" = FROM clk_gtx TO axi4lite_clk 20000 ps DATAPATHONLY; #assumes axi4lite_clk <= 50 MHz
# Depending on system configuration, the analysis tool may use either TNM_NET clk_gtx
# or TNM_NET phy_clk_tx so only one set will be analyzed
# Rx Clock crossings - Some paths are analyzed by the TS_flow_rx_to_tx constraint also
# Needed since ts_resync_flops is commented out
TIMESPEC "TS_RX_CLIENT_CLK_2_TX_CLIENT_CLK" = FROM phy_clk_rx TO phy_clk_tx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz
TIMESPEC "TS_TX_CLIENT_CLK_2_RX_CLIENT_CLK" = FROM phy_clk_tx TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz
TIMESPEC "TS_RX_CLIENT_CLK_2_GTX_CLK" = FROM phy_clk_rx TO clk_gtx 8000 ps DATAPATHONLY; #assumes phy_clk_tx <= 125 MHz
TIMESPEC "TS_GTX_CLK_2_RX_CLIENT_CLK" = FROM clk_gtx TO phy_clk_rx 8000 ps DATAPATHONLY; #assumes phy_clk_rx <= 125 MHz

View File

@ -1,3 +0,0 @@
-g TdoPin:PULLNONE
-g StartUpClk:JTAGCLK
#add other options here.

View File

@ -1,6 +0,0 @@
setMode -bscan
setCable -p auto
identify
assignfile -p 2 -file implementation/download.bit
program -p 2
quit

View File

@ -1,84 +0,0 @@
FLOWTYPE = FPGA;
###############################################################
## Filename: fast_runtime.opt
##
## Option File For Xilinx FPGA Implementation Flow for Fast
## Runtime.
##
## Version: 4.1.1
###############################################################
#
# Options for Translator
#
# Type "ngdbuild -h" for a detailed list of ngdbuild command line options
#
Program ngdbuild
-p <partname>; # Partname to use - picked from xflow commandline
-nt timestamp; # NGO File generation. Regenerate only when
# source netlist is newer than existing
# NGO file (default)
-bm <design>.bmm # Block RAM memory map file
<userdesign>; # User design - pick from xflow command line
-uc <design>.ucf; # ucf constraints
<design>.ngd; # Name of NGD file. Filebase same as design filebase
End Program ngdbuild
#
# Options for Mapper
#
# Type "map -h <arch>" for a detailed list of map command line options
#
Program map
-o <design>_map.ncd; # Output Mapped ncd file
-w; # Overwrite output files.
-pr b; # Pack internal FF/latches into IOBs
#-fp <design>.mfp; # Floorplan file
-ol high;
-timing;
-detail;
<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

View File

@ -1,158 +0,0 @@
<FILTERS>
<IDENTIFICATION VERSION="1.2" XTLVERSION="1.2"/>
<SET CLASS="PROJECT" VIEW_ID="BUSINTERFACE">
<HEADERS HSCROLL="0" VSCROLL="0">
<VARIABLE COL_INDEX="0" COL_WIDTH="306" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="HEADER"/>
</HEADERS>
<SET CLASS="FILTER_GROUP" ID="By Connection" IS_EXPANDED="TRUE">
<VARIABLE NAME="By Connection" VALUE="By Connection" VIEWDISP="Bus Interface Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="Connected" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="Connected" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Unconnected" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="Unconnected" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
<SET CLASS="FILTER_GROUP" ID="By Bus Standard" IS_EXPANDED="TRUE">
<VARIABLE COL_INDEX="0" NAME="By Bus Standard" VALUE="By Bus Standard" VIEWDISP="Bus Interface Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="AXI" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="AXI" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="AXIS" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="AXIS" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="OPB" IS_VISIBLE="FALSE" ROW_INDEX="2">
<VARIABLE IS_LABELED="TRUE" NAME="OPB" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="LMB" ROW_INDEX="3">
<VARIABLE IS_LABELED="TRUE" NAME="LMB" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="PLBV34" IS_VISIBLE="FALSE" ROW_INDEX="4">
<VARIABLE IS_LABELED="TRUE" NAME="PLBV34" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="PLBV46" IS_VISIBLE="FALSE" ROW_INDEX="5">
<VARIABLE IS_LABELED="TRUE" NAME="PLBV46" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="OCM" IS_VISIBLE="FALSE" ROW_INDEX="6">
<VARIABLE IS_LABELED="TRUE" NAME="OCM" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="FSL" IS_VISIBLE="FALSE" ROW_INDEX="7">
<VARIABLE IS_LABELED="TRUE" NAME="FSL" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="DCR" IS_VISIBLE="FALSE" ROW_INDEX="8">
<VARIABLE IS_LABELED="TRUE" NAME="DCR" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="FCB" IS_VISIBLE="FALSE" ROW_INDEX="9">
<VARIABLE IS_LABELED="TRUE" NAME="FCB" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="XIL" IS_EXPANDED="TRUE" ROW_INDEX="10">
<VARIABLE IS_LABELED="TRUE" NAME="Xilinx Point To Point" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
<SET CLASS="SUB_FILTER" ID="XIL_BRAM" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="XIL_BRAM" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="SUB_FILTER" ID="XIL_BSCAN" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="XIL_BSCAN" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="SUB_FILTER" ID="XIL_MBDEBUG3" ROW_INDEX="2">
<VARIABLE IS_LABELED="TRUE" NAME="XIL_MBDEBUG3" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="SUB_FILTER" ID="XIL_MBTRACE2" ROW_INDEX="3">
<VARIABLE IS_LABELED="TRUE" NAME="XIL_MBTRACE2" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
<SET CLASS="FILTER" ID="USER" IS_VISIBLE="FALSE" ROW_INDEX="11">
<VARIABLE IS_LABELED="TRUE" NAME="User Defined" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="XCL" IS_VISIBLE="FALSE" ROW_INDEX="12">
<VARIABLE IS_LABELED="TRUE" NAME="XCL" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
<SET CLASS="FILTER_GROUP" ID="By Interface Type" IS_EXPANDED="TRUE">
<VARIABLE NAME="By Interface Type" VALUE="By Interface Type" VIEWDISP="Bus Interface Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="Slaves" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="Slaves" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Masters" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="Masters" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Master Slaves" ROW_INDEX="2">
<VARIABLE IS_LABELED="TRUE" NAME="Master Slaves" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Monitors" ROW_INDEX="3">
<VARIABLE IS_LABELED="TRUE" NAME="Monitors" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Targets" ROW_INDEX="4">
<VARIABLE IS_LABELED="TRUE" NAME="Targets" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Initiators" ROW_INDEX="5">
<VARIABLE IS_LABELED="TRUE" NAME="Initiators" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
</SET>
<SET CLASS="PROJECT" VIEW_ID="PORT">
<HEADERS>
<VARIABLE COL_WIDTH="50" IS_VISIBLE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="HEADER"/>
</HEADERS>
<SET CLASS="FILTER_GROUP" ID="By Interface" IS_EXPANDED="TRUE">
<VARIABLE NAME="By Interface" VALUE="By Interface" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="BUS" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="BUS" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="IO" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="IO" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
<SET CLASS="FILTER_GROUP" ID="By Connection" IS_EXPANDED="TRUE">
<VARIABLE NAME="By Connection" VALUE="By Connection" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="Defaults" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="Defaults" VALUE="FALSE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Connected" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="Connected" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Unconnected" ROW_INDEX="2">
<VARIABLE IS_LABELED="TRUE" NAME="Unconnected" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
<SET CLASS="FILTER_GROUP" ID="By Class" IS_EXPANDED="TRUE">
<VARIABLE COL_INDEX="0" NAME="By Class" VALUE="By Class" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="Clocks Only" ROW_INDEX="0">
<VARIABLE NAME="Clocks Only" VALUE="Clocks Only" VIEWDISP="Port Filters" VIEWTYPE="BUTTON"/>
</SET>
<SET CLASS="FILTER" ID="Clocks" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="Clocks" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Resets Only" ROW_INDEX="2">
<VARIABLE NAME="Resets Only" VALUE="Resets Only" VIEWDISP="Port Filters" VIEWTYPE="BUTTON"/>
</SET>
<SET CLASS="FILTER" ID="Resets" ROW_INDEX="3">
<VARIABLE IS_LABELED="TRUE" NAME="Resets" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Interrupts Only" ROW_INDEX="4">
<VARIABLE NAME="Interrupts Only" VALUE="Interrupts Only" VIEWDISP="Port Filters" VIEWTYPE="BUTTON"/>
</SET>
<SET CLASS="FILTER" ID="Interrupts" ROW_INDEX="5">
<VARIABLE IS_LABELED="TRUE" NAME="Interrupts" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Others" ROW_INDEX="6">
<VARIABLE IS_LABELED="TRUE" NAME="Others" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
<SET CLASS="FILTER_GROUP" ID="By Direction" IS_EXPANDED="TRUE">
<VARIABLE NAME="By Direction" VALUE="By Direction" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
<SET CLASS="FILTER" ID="Inputs" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="Inputs" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="Outputs" ROW_INDEX="1">
<VARIABLE IS_LABELED="TRUE" NAME="Outputs" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="InOuts" ROW_INDEX="2">
<VARIABLE IS_LABELED="TRUE" NAME="InOuts" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
</SET>
</SET>
</SET>
</FILTERS>

View File

@ -1,221 +0,0 @@
<SETTINGS>
<IDENTIFICATION VERSION="1.2" XTLVERSION="1.2"/>
<SET CLASS="PROJECT" DISPLAYMODE="TREE" VIEW_ID="BUSINTERFACE">
<HEADERS HSCROLL="0" VSCROLL="0">
<VARIABLE COL_INDEX="0" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="FALSE" VIEWDISP="Bus Standard" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" COL_WIDTH="487" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="FALSE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="FALSE" VIEWDISP="Type" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="180,450,180" VERSION="0"/>
<STATUS>
<SELECTIONS/>
</STATUS>
<SEQUENCES IS_DEF_SEQUENCES="TRUE">
<VARIABLE ID="axi4_0" ROW_INDEX="0"/>
<VARIABLE ID="axi4lite_0" ROW_INDEX="1"/>
<VARIABLE ID="microblaze_0" ROW_INDEX="4"/>
<VARIABLE ID="microblaze_0_ilmb" ROW_INDEX="3"/>
<VARIABLE ID="microblaze_0_dlmb" ROW_INDEX="2"/>
<VARIABLE ID="microblaze_0_i_bram_ctrl" ROW_INDEX="7"/>
<VARIABLE ID="microblaze_0_d_bram_ctrl" ROW_INDEX="6"/>
<VARIABLE ID="microblaze_0_bram_block" ROW_INDEX="5"/>
<VARIABLE ID="proc_sys_reset_0" ROW_INDEX="19"/>
<VARIABLE ID="clock_generator_0" ROW_INDEX="18"/>
<VARIABLE ID="debug_module" ROW_INDEX="9"/>
<VARIABLE ID="RS232_Uart_1" ROW_INDEX="17"/>
<VARIABLE ID="DIP_Switches_4Bits" ROW_INDEX="13"/>
<VARIABLE ID="LEDs_4Bits" ROW_INDEX="14"/>
<VARIABLE ID="Push_Buttons_4Bits" ROW_INDEX="15"/>
<VARIABLE ID="MCB_DDR3" ROW_INDEX="8"/>
<VARIABLE ID="ETHERNET" ROW_INDEX="12"/>
<VARIABLE ID="axi_timer_0" ROW_INDEX="16"/>
<VARIABLE ID="ETHERNET_dma" ROW_INDEX="11"/>
<VARIABLE ID="microblaze_0_intc" ROW_INDEX="10"/>
</SEQUENCES>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FOCUS_TREE" VIEW_ID="BUSINTERFACE">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="FALSE" VIEWDISP="Bus Standard" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="FALSE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="FALSE" VIEWDISP="Type" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="180,450,180" VERSION="0"/>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FLAT" VIEW_ID="BUSINTERFACE">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="FALSE" VIEWDISP="Bus Standard" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="FALSE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="FALSE" VIEWDISP="Type" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="180,450,180" VERSION="0"/>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FOCUS_FLAT" VIEW_ID="BUSINTERFACE">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="FALSE" VIEWDISP="Bus Standard" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="FALSE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="FALSE" VIEWDISP="Type" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="180,450,180" VERSION="0"/>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="TREE" VIEW_ID="PORT">
<HEADERS HSCROLL="0" VSCROLL="0">
<VARIABLE COL_INDEX="0" COL_WIDTH="215" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Net" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Direction" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Range" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Class" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Frequency(Hz)" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Reset Polarity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" COL_WIDTH="167" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="9" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="10" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,630,180" VERSION="0"/>
<STATUS>
<SELECTIONS/>
</STATUS>
<SEQUENCES IS_DEF_SEQUENCES="TRUE">
<VARIABLE ID="ExternalPorts" ROW_INDEX="0"/>
<VARIABLE ID="axi4_0" ROW_INDEX="1"/>
<VARIABLE ID="axi4lite_0" ROW_INDEX="2"/>
<VARIABLE ID="microblaze_0" ROW_INDEX="5"/>
<VARIABLE ID="microblaze_0_ilmb" ROW_INDEX="4"/>
<VARIABLE ID="microblaze_0_dlmb" ROW_INDEX="3"/>
<VARIABLE ID="microblaze_0_i_bram_ctrl" ROW_INDEX="8"/>
<VARIABLE ID="microblaze_0_d_bram_ctrl" ROW_INDEX="7"/>
<VARIABLE ID="microblaze_0_bram_block" ROW_INDEX="6"/>
<VARIABLE ID="proc_sys_reset_0" ROW_INDEX="20"/>
<VARIABLE ID="clock_generator_0" ROW_INDEX="19"/>
<VARIABLE ID="debug_module" ROW_INDEX="10"/>
<VARIABLE ID="RS232_Uart_1" ROW_INDEX="18"/>
<VARIABLE ID="DIP_Switches_4Bits" ROW_INDEX="14"/>
<VARIABLE ID="LEDs_4Bits" ROW_INDEX="15"/>
<VARIABLE ID="Push_Buttons_4Bits" ROW_INDEX="16"/>
<VARIABLE ID="MCB_DDR3" ROW_INDEX="9"/>
<VARIABLE ID="ETHERNET" ROW_INDEX="13"/>
<VARIABLE ID="axi_timer_0" ROW_INDEX="17"/>
<VARIABLE ID="ETHERNET_dma" ROW_INDEX="12"/>
<VARIABLE ID="microblaze_0_intc" ROW_INDEX="11"/>
</SEQUENCES>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FOCUS_TREE" VIEW_ID="PORT">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Net" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Direction" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="Range" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Class" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Frequency(Hz)" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Reset Polarity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="9" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="10" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,630,180" VERSION="0"/>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FLAT" VIEW_ID="PORT">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Port Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Net" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="Direction" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Range" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Class" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Frequency(Hz)" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="TRUE" VIEWDISP="Reset Polarity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="9" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="10" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="11" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,630,180" VERSION="0"/>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FOCUS_FLAT" VIEW_ID="PORT">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Port Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Net" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="Direction" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Range" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Class" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Frequency(Hz)" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="TRUE" VIEWDISP="Reset Polarity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="9" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="10" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="11" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,630,180" VERSION="0"/>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="TREE" VIEW_ID="ADDRESS">
<HEADERS HSCROLL="0" VSCROLL="0">
<VARIABLE COL_INDEX="0" COL_WIDTH="200" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Base Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Base Address" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="High Address" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Size" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" COL_WIDTH="105" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface(s)" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="FALSE" VIEWDISP="ICache" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" IS_VISIBLE="FALSE" VIEWDISP="DCache" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" IS_VISIBLE="FALSE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="10" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="FALSE" VIEWDISP="Address Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="9" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Lock" VIEWTYPE="HEADER"/>
</HEADERS>
<SET ID="microblaze_0" IS_EXPANDED="TRUE"/>
<STATUS IS_EXPANDED="TRUE">
<SELECTIONS/>
</STATUS>
</SET>
<SET CLASS="PROJECT" DISPLAYMODE="FLAT" VIEW_ID="ADDRESS">
<HEADERS>
<VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Base Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Base Address" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="High Address" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Size" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface(s)" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="7" IS_VISIBLE="FALSE" VIEWDISP="ICache" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" IS_VISIBLE="FALSE" VIEWDISP="DCache" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="9" IS_VISIBLE="FALSE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="10" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="11" IS_VISIBLE="FALSE" VIEWDISP="Address Type" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="12" IS_VISIBLE="TRUE" VIEWDISP="Lock" VIEWTYPE="HEADER"/>
</HEADERS>
</SET>
</SETTINGS>

View File

@ -1,7 +0,0 @@
-p
xc6slx45tfgg484-3
-lang
vhdl
-msg
__xps/ise/xmsgprops.lst
system.mhs

View File

@ -1 +0,0 @@
<1D>トョメ<EFBDAE>tヲハ隰ハ蓙メ゙ワ@Dbb\b\`bDv*<2A>トョメ<EFBDAE>tヲハ閼゙ツ菠@D<>リメワ<EFBE92>ニ゙レD@D赳l`jD@D<>v.<2E>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>ツ菠@Dう<44>暢恰ィェ、灰@D赳ツ蒻ツワlDv.<2E>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>ツ菠@D<>ャ中汗ヲ超灰@D<>l齎<6C>j錺v'<27>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>ツ菠@D<>魔至D@DフホホhphDv'<27>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>ツ菠@D、ヲィセ<EFBDA8>椈う暢イD@DbDv&<26>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>ツ菠@Dヲ<44><EFBFBD>灰@DZfDv%<25>トョメ<EFBDAE>tヲハ隕<EFBE8A>靆レ@Dレトセツ<EFBDBE>セb<EFBDBE>D@Db\`Dv;<3B>トョメ<EFBDAE>tェ猜ツ靆ヲ<E99D86>靆レ@D<>ヨセ御ハ礇@Dd````````D@Dレメニ葯トリツ<EFBE98>セ`Dv@<40>トョメ<EFBDAE>tなネ<E381AA>葯ニハ跏゙隋Dレメニ葯トリツ<EFBE98>セ`D@Dレメニ葯トリツ<EFBE98>D@Dレメニ葯トリツ<EFBE98>セ`DvH<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dネツ霙セニツニミハセレハレセリメ跖D@D嚀╂<E59A80>、fDvA<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dネツ霙セニツニミハセ贅<EFBDBE>D@DblfphDvI<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dメワ跖萓ニツニミハセレハレセリメ跖D@D嚀╂<E59A80>、fDvB<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dメワ跖萓ニツニミハセ贅<EFBDBE>D@DblfphDvH<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dレトセニリ゙ニヨセフ萍粲ハワニ<EFBE9C>@Db````````Dv?<3F>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dレトセフ瑕セハワツトリハD@D撃丿灰vE<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dレメニ葯トリツ<EFBE98>セ`D@Dレトセリ゙ニツリセレハレ゙蔗セ贅<EFBDBE>D@DpbrdDvE<76>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@D<><44>セヲ霻霹ミハ貔h<E8B294>韆D@Dツ<44>セホ默゙D@Dレメニ葯トリツ<EFBE98>セ`DvG<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D<E98C99><44>セヲ霻霹ミハ貔h<E8B294>韆D@D<>ハセメワ靆蒿<E99D86>霎メネD@Dィ、ェ灰v?<3F>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@D勘衰、怺ィD@Dツ<44>セハ靤ハ葆ハ錺@Dレメニ葯トリツ<EFBE98>セ`Dv;<3B>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D勘衰、怺ィD@Dハ靤ハ葆ハ霎ネレツセ`D@Dィ、ェ灰v=<3D>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D勘衰、怺ィD@D<>ハセメワ靆蒿<E99D86>霎メネD@Dィ、ェ灰v=<3D>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@D<>域セh<EFBDBE>韆D@Dツ<44>セホ默゙D@Dレメニ葯トリツ<EFBE98>セ`Dv@<40>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D<E98C99>域セh<EFBDBE>韆D@D<>ハセメワ靆蒿<E99D86>霎メネD@D撃丿灰v><3E>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@D嚀╂<E59A80>、fD@Dツ<44>セ詬セネネ蓿D@Dレメニ葯トリツ<EFBE98>セ`DvE<76>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@D<><44>ミセ<EFBE90>韋゙ワ貔h<E8B294>韆D@Dツ<44>セホ默゙D@Dレメニ葯トリツ<EFBE98>セ`DvG<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D<E98C99><44>ミセ<EFBE90>韋゙ワ貔h<E8B294>韆D@D<>ハセメワ靆蒿<E99D86>霎メネD@Dィ、ェ灰vC<76>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@D、ヲdfdセェツ蒻セbD@Dツ<44><EFBFBD>蒻リメ靆D@Dレメニ葯トリツ<EFBE98>セ`DvC<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D、ヲdfdセェツ蒻セbD@D<>蒻セ`セトツ<EFBE84>セ萃靆D@Dbbjd``Dv><3E>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D、ヲdfdセェツ蒻セbD@D<>蒻セ`セネツ霙霻ネ靤D@DpDv><3E>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D、ヲdfdセェツ蒻セbD@D<>蒻セ`セ狡萪頸D@DヷワハDvA<76>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙D、ヲdfdセェツ蒻セbD@D<>ハセメワ靆蒿<E99D86>霎メネD@Dィ、ェ灰v?<3F>トョメ<EFBDAE>tなネ<E381AA>ハ萪獎ハ萃リ@Dツ<44>セ靨レハ萓`D@Dツ<44>セ靨レハ腑@Dレメニ葯トリツ<EFBE98>セ`Dv@<40>トョメ<EFBDAE>tェ猜ツ靆<EFBE82>レ玻ワハワ錙Dツ<44>セ靨レハ萓`D@D<>ハセメワ靆蒿<E99D86>霎メネD@Dィ、ェ灰v

View File

@ -1,216 +0,0 @@
#################################################################
# Makefile generated by Xilinx Platform Studio
# Project:C:\E\Dev\FreeRTOS\WorkingCopy\Demo\MicroBlaze_Spartan-6_EthernetFull\PlatformStudioProject\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\WorkingCopy\Demo\MicroBlaze_Spartan-6_EthernetFull\PlatformStudioProject\system.mhs
include system_incl.make
#################################################################
# PHONY TARGETS
#################################################################
.PHONY: dummy
.PHONY: netlistclean
.PHONY: bitsclean
.PHONY: simclean
.PHONY: exporttosdk
#################################################################
# 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 " exporttosdk: Export files to SDK"
@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 " "
@echo " netlistclean: Deletes netlist"
@echo " bitsclean: Deletes bit, ncd, bmm files"
@echo " hwclean : Deletes implementation dir"
@echo " simclean : Deletes simulation dir"
@echo " clean : Deletes all generated files/directories"
@echo " "
bits: $(SYSTEM_BIT)
ace: $(SYSTEM_ACE)
exporttosdk: $(SYSTEM_HW_HANDOFF_DEP)
netlist: $(POSTSYN_NETLIST)
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 & \
system_fuse.cmd
cd simulation/behavioral & \
start /B $(SIM_CMD) -gui -tclbatch system_setup.tcl
simmodel: $(DEFAULT_SIM_SCRIPT)
behavioral_model: $(BEHAVIORAL_SIM_SCRIPT)
structural_model: $(STRUCTURAL_SIM_SCRIPT)
clean: hwclean simclean
rm -f _impact.cmd
hwclean: netlistclean bitsclean
rm -rf implementation synthesis xst hdl
rm -rf xst.srp $(SYSTEM).srp
rm -f __xps/ise/_xmsgs/bitinit.xmsgs
netlistclean:
rm -f $(POSTSYN_NETLIST)
rm -f platgen.log
rm -f __xps/ise/_xmsgs/platgen.xmsgs
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
rm -f implementation/download.bit
rm -f __xps/$(SYSTEM)_routed
simclean:
rm -rf simulation/behavioral
rm -f simgen.log
rm -f __xps/ise/_xmsgs/simgen.xmsgs
#################################################################
# BOOTLOOP ELF FILES
#################################################################
$(MICROBLAZE_0_BOOTLOOP): $(MICROBLAZE_BOOTLOOP_LE)
IF NOT EXIST "$(BOOTLOOP_DIR)" @mkdir "$(BOOTLOOP_DIR)"
cp -f $(MICROBLAZE_BOOTLOOP_LE) $(MICROBLAZE_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..."
cd synthesis & synthesis.cmd
__xps/$(SYSTEM)_routed: $(FPGA_IMP_DEPENDENCY)
@echo "*********************************************"
@echo "Running Xilinx Implementation tools.."
@echo "*********************************************"
@cp -f $(UCF_FILE) implementation/$(SYSTEM).ucf
@cp -f etc/fast_runtime.opt implementation/xflow.opt
xflow -wd implementation -p $(DEVICE) -implement xflow.opt $(SYSTEM).ngc
touch __xps/$(SYSTEM)_routed
$(SYSTEM_BIT): __xps/$(SYSTEM)_routed $(BITGEN_UT_FILE)
xilperl $(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) & cd ..
$(DOWNLOAD_BIT): $(SYSTEM_BIT) $(BRAMINIT_ELF_IMP_FILES) __xps/bitinit.opt
@cp -f implementation/$(SYSTEM)_bd.bmm .
@echo "*********************************************"
@echo "Initializing BRAM contents of the bitstream"
@echo "*********************************************"
bitinit -p $(DEVICE) $(MHSFILE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_IMP_FILE_ARGS) \
-bt $(SYSTEM_BIT) -o $(DOWNLOAD_BIT)
@rm -f $(SYSTEM)_bd.bmm
$(SYSTEM_ACE):
@echo "In order to generate ace file, you must have:-"
@echo "- exactly one processor."
@echo "- opb_mdm, if using microblaze."
#################################################################
# EXPORT_TO_SDK FLOW
#################################################################
$(SYSTEM_HW_HANDOFF): $(MHSFILE) __xps/platgen.opt
IF NOT EXIST "$(SDK_EXPORT_DIR)" @mkdir "$(SDK_EXPORT_DIR)"
psf2Edward -inp $(SYSTEM).xmp -exit_on_error -edwver 1.2 -xml $(SDK_EXPORT_DIR)/$(SYSTEM).xml $(GLOBAL_SEARCHPATHOPT)
xdsgen -inp $(SYSTEM).xmp -report $(SDK_EXPORT_DIR)/$(SYSTEM).html $(GLOBAL_SEARCHPATHOPT) -make_docs_local
$(SYSTEM_HW_HANDOFF_BIT): $(SYSTEM_BIT)
@rm -rf $(SYSTEM_HW_HANDOFF_BIT)
@cp -f $(SYSTEM_BIT) $(SDK_EXPORT_DIR)
$(SYSTEM_HW_HANDOFF_BMM): implementation/$(SYSTEM)_bd.bmm
@rm -rf $(SYSTEM_HW_HANDOFF_BMM)
@cp -f implementation/$(SYSTEM)_bd.bmm $(SDK_EXPORT_DIR)
#################################################################
# SIMULATION FLOW
#################################################################
################## BEHAVIORAL SIMULATION ##################
$(BEHAVIORAL_SIM_SCRIPT): $(MHSFILE) __xps/simgen.opt \
$(BRAMINIT_ELF_SIM_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_SIM_FILES)
@echo "*********************************************"
@echo "Creating structural simulation models..."
@echo "*********************************************"
simgen $(SIMGEN_OPTIONS) -sd implementation -m structural $(MHSFILE)
################## TIMING SIMULATION ##################
implementation/$(SYSTEM).ncd: __xps/$(SYSTEM)_routed
$(TIMING_SIM_SCRIPT): implementation/$(SYSTEM).ncd __xps/simgen.opt \
$(BRAMINIT_ELF_SIM_FILES)
@echo "*********************************************"
@echo "Creating timing simulation models..."
@echo "*********************************************"
simgen $(SIMGEN_OPTIONS) -sd implementation -m timing $(MHSFILE)
dummy:
@echo ""

View File

@ -1,485 +0,0 @@
# ##############################################################################
# Created by Base System Builder Wizard for Xilinx EDK 13.1 Build EDK_O.40d
# Sun Aug 28 16:20:06 2011
# Target Board: xilinx.com sp605 Rev C
# Family: spartan6
# Device: xc6slx45t
# Package: fgg484
# Speed Grade: -3
# ##############################################################################
PARAMETER VERSION = 2.1.0
PORT RESET = RESET, DIR = I, SIGIS = RST, RST_POLARITY = 1
PORT CLK_P = CLK, DIR = I, DIFFERENTIAL_POLARITY = P, SIGIS = CLK, CLK_FREQ = 200000000
PORT CLK_N = CLK, DIR = I, DIFFERENTIAL_POLARITY = N, SIGIS = CLK, CLK_FREQ = 200000000
PORT RS232_Uart_1_sout = RS232_Uart_1_sout, DIR = O
PORT RS232_Uart_1_sin = RS232_Uart_1_sin, DIR = I
PORT DIP_Switches_4Bits_TRI_I = DIP_Switches_4Bits_TRI_I, DIR = I, VEC = [0:3]
PORT LEDs_4Bits_TRI_O = LEDs_4Bits_TRI_O, DIR = O, VEC = [0:3]
PORT Push_Buttons_4Bits_TRI_I = Push_Buttons_4Bits_TRI_I, DIR = I, VEC = [0:3]
PORT mcbx_dram_clk = mcbx_dram_clk, DIR = O
PORT mcbx_dram_clk_n = mcbx_dram_clk_n, DIR = O
PORT mcbx_dram_cke = mcbx_dram_cke, DIR = O
PORT mcbx_dram_odt = mcbx_dram_odt, DIR = O
PORT mcbx_dram_ras_n = mcbx_dram_ras_n, DIR = O
PORT mcbx_dram_cas_n = mcbx_dram_cas_n, DIR = O
PORT mcbx_dram_we_n = mcbx_dram_we_n, DIR = O
PORT mcbx_dram_udm = mcbx_dram_udm, DIR = O
PORT mcbx_dram_ldm = mcbx_dram_ldm, DIR = O
PORT mcbx_dram_ba = mcbx_dram_ba, DIR = O, VEC = [2:0]
PORT mcbx_dram_addr = mcbx_dram_addr, DIR = O, VEC = [12:0]
PORT mcbx_dram_ddr3_rst = mcbx_dram_ddr3_rst, DIR = O
PORT mcbx_dram_dq = mcbx_dram_dq, DIR = IO, VEC = [15:0]
PORT mcbx_dram_dqs = mcbx_dram_dqs, DIR = IO
PORT mcbx_dram_dqs_n = mcbx_dram_dqs_n, DIR = IO
PORT mcbx_dram_udqs = mcbx_dram_udqs, DIR = IO
PORT mcbx_dram_udqs_n = mcbx_dram_udqs_n, DIR = IO
PORT rzq = rzq, DIR = IO
PORT zio = zio, DIR = IO
PORT ETHERNET_MDIO = ETHERNET_MDIO, DIR = IO
PORT ETHERNET_MDC = ETHERNET_MDC, DIR = O
PORT ETHERNET_TX_ER = ETHERNET_TX_ER, DIR = O
PORT ETHERNET_TXD = ETHERNET_TXD, DIR = O, VEC = [7:0]
PORT ETHERNET_TX_EN = ETHERNET_TX_EN, DIR = O
PORT ETHERNET_MII_TX_CLK = ETHERNET_MII_TX_CLK, DIR = I
PORT ETHERNET_TX_CLK = ETHERNET_TX_CLK, DIR = O
PORT ETHERNET_RXD = ETHERNET_RXD, DIR = I, VEC = [7:0]
PORT ETHERNET_RX_ER = ETHERNET_RX_ER, DIR = I
PORT ETHERNET_RX_CLK = ETHERNET_RX_CLK, DIR = I
PORT ETHERNET_RX_DV = ETHERNET_RX_DV, DIR = I
PORT ETHERNET_PHY_RST_N = ETHERNET_PHY_RST_N, DIR = O
BEGIN axi_interconnect
PARAMETER INSTANCE = axi4_0
PARAMETER HW_VER = 1.02.a
PORT interconnect_aclk = clk_100_0000MHzPLL0
PORT INTERCONNECT_ARESETN = proc_sys_reset_0_Interconnect_aresetn
END
BEGIN axi_interconnect
PARAMETER INSTANCE = axi4lite_0
PARAMETER HW_VER = 1.02.a
PARAMETER C_INTERCONNECT_CONNECTIVITY_MODE = 0
PORT INTERCONNECT_ARESETN = proc_sys_reset_0_Interconnect_aresetn
PORT INTERCONNECT_ACLK = clk_50_0000MHzPLL0
END
BEGIN microblaze
PARAMETER INSTANCE = microblaze_0
PARAMETER HW_VER = 8.10.a
PARAMETER C_INTERCONNECT = 2
PARAMETER C_USE_BARREL = 1
PARAMETER C_USE_FPU = 0
PARAMETER C_DEBUG_ENABLED = 1
PARAMETER C_ICACHE_BASEADDR = 0xc0000000
PARAMETER C_ICACHE_HIGHADDR = 0xc7ffffff
PARAMETER C_USE_ICACHE = 1
PARAMETER C_ICACHE_ALWAYS_USED = 1
PARAMETER C_DCACHE_BASEADDR = 0xc0000000
PARAMETER C_DCACHE_HIGHADDR = 0xc7ffffff
PARAMETER C_USE_DCACHE = 1
PARAMETER C_DCACHE_ALWAYS_USED = 1
PARAMETER C_INTERCONNECT_M_AXI_DC_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DC_W_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DP_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DP_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DP_W_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DP_R_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DP_B_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DC_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DC_R_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_DC_B_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_IC_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_IC_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_IC_W_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_IC_R_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_IC_B_REGISTER = 1
BUS_INTERFACE ILMB = microblaze_0_ilmb
BUS_INTERFACE DLMB = microblaze_0_dlmb
BUS_INTERFACE M_AXI_DP = axi4lite_0
BUS_INTERFACE M_AXI_DC = axi4_0
BUS_INTERFACE M_AXI_IC = axi4_0
BUS_INTERFACE DEBUG = microblaze_0_debug
PORT MB_RESET = proc_sys_reset_0_MB_Reset
PORT CLK = clk_100_0000MHzPLL0
PORT INTERRUPT = microblaze_0_interrupt
END
BEGIN lmb_v10
PARAMETER INSTANCE = microblaze_0_ilmb
PARAMETER HW_VER = 2.00.a
PORT SYS_RST = proc_sys_reset_0_BUS_STRUCT_RESET
PORT LMB_CLK = clk_100_0000MHzPLL0
END
BEGIN lmb_v10
PARAMETER INSTANCE = microblaze_0_dlmb
PARAMETER HW_VER = 2.00.a
PORT SYS_RST = proc_sys_reset_0_BUS_STRUCT_RESET
PORT LMB_CLK = clk_100_0000MHzPLL0
END
BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = microblaze_0_i_bram_ctrl
PARAMETER HW_VER = 3.00.a
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x00001fff
BUS_INTERFACE SLMB = microblaze_0_ilmb
BUS_INTERFACE BRAM_PORT = microblaze_0_i_bram_ctrl_2_microblaze_0_bram_block
END
BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = microblaze_0_d_bram_ctrl
PARAMETER HW_VER = 3.00.a
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x00001fff
BUS_INTERFACE SLMB = microblaze_0_dlmb
BUS_INTERFACE BRAM_PORT = microblaze_0_d_bram_ctrl_2_microblaze_0_bram_block
END
BEGIN bram_block
PARAMETER INSTANCE = microblaze_0_bram_block
PARAMETER HW_VER = 1.00.a
BUS_INTERFACE PORTA = microblaze_0_i_bram_ctrl_2_microblaze_0_bram_block
BUS_INTERFACE PORTB = microblaze_0_d_bram_ctrl_2_microblaze_0_bram_block
END
BEGIN proc_sys_reset
PARAMETER INSTANCE = proc_sys_reset_0
PARAMETER HW_VER = 3.00.a
PARAMETER C_EXT_RESET_HIGH = 1
PORT Ext_Reset_In = RESET
PORT MB_Reset = proc_sys_reset_0_MB_Reset
PORT Slowest_sync_clk = clk_50_0000MHzPLL0
PORT Interconnect_aresetn = proc_sys_reset_0_Interconnect_aresetn
PORT Dcm_locked = proc_sys_reset_0_Dcm_locked
PORT MB_Debug_Sys_Rst = proc_sys_reset_0_MB_Debug_Sys_Rst
PORT BUS_STRUCT_RESET = proc_sys_reset_0_BUS_STRUCT_RESET
END
BEGIN clock_generator
PARAMETER INSTANCE = clock_generator_0
PARAMETER HW_VER = 4.01.a
PARAMETER C_CLKIN_FREQ = 200000000
PARAMETER C_CLKOUT0_FREQ = 600000000
PARAMETER C_CLKOUT0_GROUP = PLL0
PARAMETER C_CLKOUT0_BUF = FALSE
PARAMETER C_CLKOUT1_FREQ = 600000000
PARAMETER C_CLKOUT1_PHASE = 180
PARAMETER C_CLKOUT1_GROUP = PLL0
PARAMETER C_CLKOUT1_BUF = FALSE
PARAMETER C_CLKOUT2_FREQ = 100000000
PARAMETER C_CLKOUT2_GROUP = PLL0
PARAMETER C_CLKOUT3_FREQ = 125000000
PARAMETER C_CLKOUT3_GROUP = NONE
PARAMETER C_CLKOUT4_FREQ = 200000000
PARAMETER C_CLKOUT4_GROUP = PLL0
PARAMETER C_CLKOUT5_FREQ = 50000000
PARAMETER C_CLKOUT5_GROUP = PLL0
PORT RST = RESET
PORT CLKIN = CLK
PORT CLKOUT2 = clk_100_0000MHzPLL0
PORT CLKOUT5 = clk_50_0000MHzPLL0
PORT CLKOUT3 = clk_125_0000MHz
PORT CLKOUT4 = clk_200_0000MHzPLL0
PORT CLKOUT0 = clk_600_0000MHzPLL0_nobuf
PORT CLKOUT1 = clk_600_0000MHz180PLL0_nobuf
PORT LOCKED = proc_sys_reset_0_Dcm_locked
END
BEGIN mdm
PARAMETER INSTANCE = debug_module
PARAMETER HW_VER = 2.00.b
PARAMETER C_INTERCONNECT = 2
PARAMETER C_USE_UART = 1
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x74800000
PARAMETER C_HIGHADDR = 0x7480ffff
BUS_INTERFACE S_AXI = axi4lite_0
BUS_INTERFACE MBDEBUG_0 = microblaze_0_debug
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT Debug_SYS_Rst = proc_sys_reset_0_MB_Debug_Sys_Rst
END
BEGIN axi_uartlite
PARAMETER INSTANCE = RS232_Uart_1
PARAMETER HW_VER = 1.01.a
PARAMETER C_BAUDRATE = 115200
PARAMETER C_DATA_BITS = 8
PARAMETER C_USE_PARITY = 0
PARAMETER C_ODD_PARITY = 1
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x40600000
PARAMETER C_HIGHADDR = 0x4060ffff
BUS_INTERFACE S_AXI = axi4lite_0
PORT TX = RS232_Uart_1_sout
PORT RX = RS232_Uart_1_sin
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT Interrupt = RS232_Uart_1_Interrupt
END
BEGIN axi_gpio
PARAMETER INSTANCE = DIP_Switches_4Bits
PARAMETER HW_VER = 1.01.a
PARAMETER C_GPIO_WIDTH = 4
PARAMETER C_ALL_INPUTS = 1
PARAMETER C_INTERRUPT_PRESENT = 1
PARAMETER C_IS_DUAL = 0
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x40040000
PARAMETER C_HIGHADDR = 0x4004ffff
BUS_INTERFACE S_AXI = axi4lite_0
PORT GPIO_IO_I = DIP_Switches_4Bits_TRI_I
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT IP2INTC_Irpt = DIP_Switches_4Bits_IP2INTC_Irpt
END
BEGIN axi_gpio
PARAMETER INSTANCE = LEDs_4Bits
PARAMETER HW_VER = 1.01.a
PARAMETER C_GPIO_WIDTH = 4
PARAMETER C_ALL_INPUTS = 0
PARAMETER C_INTERRUPT_PRESENT = 0
PARAMETER C_IS_DUAL = 0
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x40020000
PARAMETER C_HIGHADDR = 0x4002ffff
BUS_INTERFACE S_AXI = axi4lite_0
PORT GPIO_IO_O = LEDs_4Bits_TRI_O
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
END
BEGIN axi_gpio
PARAMETER INSTANCE = Push_Buttons_4Bits
PARAMETER HW_VER = 1.01.a
PARAMETER C_GPIO_WIDTH = 4
PARAMETER C_ALL_INPUTS = 1
PARAMETER C_INTERRUPT_PRESENT = 1
PARAMETER C_IS_DUAL = 0
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x40000000
PARAMETER C_HIGHADDR = 0x4000ffff
BUS_INTERFACE S_AXI = axi4lite_0
PORT GPIO_IO_I = Push_Buttons_4Bits_TRI_I
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT IP2INTC_Irpt = Push_Buttons_4Bits_IP2INTC_Irpt
END
BEGIN axi_s6_ddrx
PARAMETER INSTANCE = MCB_DDR3
PARAMETER HW_VER = 1.02.a
PARAMETER C_MCB_RZQ_LOC = K7
PARAMETER C_MCB_ZIO_LOC = R7
PARAMETER C_MEM_TYPE = DDR3
PARAMETER C_MEM_PARTNO = MT41J64M16XX-187E
PARAMETER C_MEM_BANKADDR_WIDTH = 3
PARAMETER C_MEM_NUM_COL_BITS = 10
PARAMETER C_SKIP_IN_TERM_CAL = 0
PARAMETER C_S0_AXI_ENABLE = 1
PARAMETER C_INTERCONNECT_S0_AXI_MASTERS = microblaze_0.M_AXI_DC & microblaze_0.M_AXI_IC & ETHERNET_dma.M_AXI_SG & ETHERNET_dma.M_AXI_MM2S & ETHERNET_dma.M_AXI_S2MM
PARAMETER C_INTERCONNECT_S0_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S0_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S0_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S0_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S0_AXI_B_REGISTER = 1
PARAMETER C_S0_AXI_BASEADDR = 0xc0000000
PARAMETER C_S0_AXI_HIGHADDR = 0xc7ffffff
BUS_INTERFACE S0_AXI = axi4_0
PORT mcbx_dram_clk = mcbx_dram_clk
PORT mcbx_dram_clk_n = mcbx_dram_clk_n
PORT mcbx_dram_cke = mcbx_dram_cke
PORT mcbx_dram_odt = mcbx_dram_odt
PORT mcbx_dram_ras_n = mcbx_dram_ras_n
PORT mcbx_dram_cas_n = mcbx_dram_cas_n
PORT mcbx_dram_we_n = mcbx_dram_we_n
PORT mcbx_dram_udm = mcbx_dram_udm
PORT mcbx_dram_ldm = mcbx_dram_ldm
PORT mcbx_dram_ba = mcbx_dram_ba
PORT mcbx_dram_addr = mcbx_dram_addr
PORT mcbx_dram_ddr3_rst = mcbx_dram_ddr3_rst
PORT mcbx_dram_dq = mcbx_dram_dq
PORT mcbx_dram_dqs = mcbx_dram_dqs
PORT mcbx_dram_dqs_n = mcbx_dram_dqs_n
PORT mcbx_dram_udqs = mcbx_dram_udqs
PORT mcbx_dram_udqs_n = mcbx_dram_udqs_n
PORT rzq = rzq
PORT zio = zio
PORT s0_axi_aclk = clk_100_0000MHzPLL0
PORT ui_clk = clk_100_0000MHzPLL0
PORT sysclk_2x = clk_600_0000MHzPLL0_nobuf
PORT sysclk_2x_180 = clk_600_0000MHz180PLL0_nobuf
PORT SYS_RST = proc_sys_reset_0_BUS_STRUCT_RESET
PORT PLL_LOCK = proc_sys_reset_0_Dcm_locked
END
BEGIN axi_ethernet
PARAMETER INSTANCE = ETHERNET
PARAMETER HW_VER = 2.01.a
PARAMETER C_PHYADDR = 0B00001
PARAMETER C_INCLUDE_IO = 1
PARAMETER C_TYPE = 1
PARAMETER C_PHY_TYPE = 1
PARAMETER C_HALFDUP = 0
PARAMETER C_TXMEM = 4096
PARAMETER C_RXMEM = 4096
PARAMETER C_TXCSUM = 0
PARAMETER C_RXCSUM = 0
PARAMETER C_TXVLAN_TRAN = 0
PARAMETER C_RXVLAN_TRAN = 0
PARAMETER C_TXVLAN_TAG = 0
PARAMETER C_RXVLAN_TAG = 0
PARAMETER C_TXVLAN_STRP = 0
PARAMETER C_RXVLAN_STRP = 0
PARAMETER C_MCAST_EXTEND = 0
PARAMETER C_STATS = 0
PARAMETER C_AVB = 0
PARAMETER C_INTERCONNECT_S_AXI_IS_ACLK_ASYNC = 0
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x41240000
PARAMETER C_HIGHADDR = 0x4127ffff
BUS_INTERFACE S_AXI = axi4lite_0
BUS_INTERFACE AXI_STR_TXD = ETHERNET_dma_txd
BUS_INTERFACE AXI_STR_TXC = ETHERNET_dma_txc
BUS_INTERFACE AXI_STR_RXS = ETHERNET_dma_rxs
BUS_INTERFACE AXI_STR_RXD = ETHERNET_dma_rxd
PORT MDIO = ETHERNET_MDIO
PORT MDC = ETHERNET_MDC
PORT GMII_TX_ER = ETHERNET_TX_ER
PORT GMII_TXD = ETHERNET_TXD
PORT GMII_TX_EN = ETHERNET_TX_EN
PORT MII_TX_CLK = ETHERNET_MII_TX_CLK
PORT GMII_TX_CLK = ETHERNET_TX_CLK
PORT GMII_RXD = ETHERNET_RXD
PORT GMII_RX_ER = ETHERNET_RX_ER
PORT GMII_RX_CLK = ETHERNET_RX_CLK
PORT GMII_RX_DV = ETHERNET_RX_DV
PORT PHY_RST_N = ETHERNET_PHY_RST_N
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT GTX_CLK = clk_125_0000MHz
PORT REF_CLK = clk_200_0000MHzPLL0
PORT AXI_STR_TXD_ACLK = clk_100_0000MHzPLL0
PORT AXI_STR_TXC_ACLK = clk_100_0000MHzPLL0
PORT AXI_STR_RXD_ACLK = clk_100_0000MHzPLL0
PORT AXI_STR_RXS_ACLK = clk_100_0000MHzPLL0
PORT AXI_STR_TXD_ARESETN = AXI_STR_TXD_ARESETN
PORT AXI_STR_TXC_ARESETN = AXI_STR_TXC_ARESETN
PORT AXI_STR_RXD_ARESETN = AXI_STR_RXD_ARESETN
PORT AXI_STR_RXS_ARESETN = AXI_STR_RXS_ARESETN
PORT INTERRUPT = ETHERNET_INTERRUPT
END
BEGIN axi_timer
PARAMETER INSTANCE = axi_timer_0
PARAMETER HW_VER = 1.01.a
PARAMETER C_COUNT_WIDTH = 32
PARAMETER C_ONE_TIMER_ONLY = 0
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x41c00000
PARAMETER C_HIGHADDR = 0x41c0ffff
BUS_INTERFACE S_AXI = axi4lite_0
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT Interrupt = axi_timer_0_Interrupt
END
BEGIN axi_dma
PARAMETER INSTANCE = ETHERNET_dma
PARAMETER HW_VER = 3.00.a
PARAMETER C_SG_INCLUDE_DESC_QUEUE = 1
PARAMETER C_SG_USE_STSAPP_LENGTH = 1
PARAMETER C_INCLUDE_MM2S_DRE = 1
PARAMETER C_INCLUDE_S2MM_DRE = 1
PARAMETER C_DLYTMR_RESOLUTION = 1250
PARAMETER C_PRMRY_IS_ACLK_ASYNC = 0
PARAMETER C_SG_INCLUDE_STSCNTRL_STRM = 1
PARAMETER C_SG_LENGTH_WIDTH = 16
PARAMETER C_INCLUDE_MM2S = 1
PARAMETER C_INCLUDE_S2MM = 1
PARAMETER C_INTERCONNECT_S_AXI_LITE_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_LITE_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_LITE_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_LITE_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_LITE_B_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_SG_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_SG_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_SG_W_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_SG_R_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_SG_B_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_MM2S_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_MM2S_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_MM2S_W_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_MM2S_R_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_MM2S_B_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_S2MM_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_S2MM_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_S2MM_W_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_S2MM_R_REGISTER = 1
PARAMETER C_INTERCONNECT_M_AXI_S2MM_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x41e00000
PARAMETER C_HIGHADDR = 0x41e0ffff
BUS_INTERFACE S_AXI_LITE = axi4lite_0
BUS_INTERFACE M_AXI_SG = axi4_0
BUS_INTERFACE M_AXI_MM2S = axi4_0
BUS_INTERFACE M_AXI_S2MM = axi4_0
BUS_INTERFACE M_AXIS_MM2S = ETHERNET_dma_txd
BUS_INTERFACE M_AXIS_CNTRL = ETHERNET_dma_txc
BUS_INTERFACE S_AXIS_STS = ETHERNET_dma_rxs
BUS_INTERFACE S_AXIS_S2MM = ETHERNET_dma_rxd
PORT s_axi_lite_aclk = clk_100_0000MHzPLL0
PORT m_axi_sg_aclk = clk_100_0000MHzPLL0
PORT m_axi_mm2s_aclk = clk_100_0000MHzPLL0
PORT m_axi_s2mm_aclk = clk_100_0000MHzPLL0
PORT mm2s_prmry_reset_out_n = AXI_STR_TXD_ARESETN
PORT mm2s_cntrl_reset_out_n = AXI_STR_TXC_ARESETN
PORT s2mm_prmry_reset_out_n = AXI_STR_RXD_ARESETN
PORT s2mm_sts_reset_out_n = AXI_STR_RXS_ARESETN
PORT mm2s_introut = ETHERNET_dma_mm2s_introut
PORT s2mm_introut = ETHERNET_dma_s2mm_introut
END
BEGIN axi_intc
PARAMETER INSTANCE = microblaze_0_intc
PARAMETER HW_VER = 1.01.a
PARAMETER C_INTERCONNECT_S_AXI_AW_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_AR_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_W_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_R_REGISTER = 1
PARAMETER C_INTERCONNECT_S_AXI_B_REGISTER = 1
PARAMETER C_BASEADDR = 0x41200000
PARAMETER C_HIGHADDR = 0x4120ffff
BUS_INTERFACE S_AXI = axi4lite_0
PORT IRQ = microblaze_0_interrupt
PORT S_AXI_ACLK = clk_50_0000MHzPLL0
PORT INTR = RS232_Uart_1_Interrupt & DIP_Switches_4Bits_IP2INTC_Irpt & Push_Buttons_4Bits_IP2INTC_Irpt & ETHERNET_INTERRUPT & axi_timer_0_Interrupt & ETHERNET_dma_mm2s_introut & ETHERNET_dma_s2mm_introut
END

View File

@ -1,38 +0,0 @@
#Please do not modify this file by hand
XmpVersion: 13.1
VerMgmt: 13.1
IntStyle: default
MHS File: system.mhs
Architecture: spartan6
Device: xc6slx45t
Package: fgg484
SpeedGrade: -3
UserCmd1:
UserCmd1Type: 0
UserCmd2:
UserCmd2Type: 0
GenSimTB: 0
SdkExportBmmBit: 1
SdkExportDir: SDK/SDK_Export
InsertNoPads: 0
WarnForEAArch: 1
HdlLang: VHDL
SimModel: BEHAVIORAL
UcfFile: data/system.ucf
EnableParTimingError: 1
ShowLicenseDialog: 1
ICacheAddr: MCB_DDR3,C_S0_AXI_BASEADDR
ICacheAddr: MCB_DDR3,C_S1_AXI_BASEADDR
ICacheAddr: MCB_DDR3,C_S2_AXI_BASEADDR
ICacheAddr: MCB_DDR3,C_S3_AXI_BASEADDR
ICacheAddr: MCB_DDR3,C_S4_AXI_BASEADDR
ICacheAddr: MCB_DDR3,C_S5_AXI_BASEADDR
DCacheAddr: MCB_DDR3,C_S0_AXI_BASEADDR
DCacheAddr: MCB_DDR3,C_S1_AXI_BASEADDR
DCacheAddr: MCB_DDR3,C_S2_AXI_BASEADDR
DCacheAddr: MCB_DDR3,C_S3_AXI_BASEADDR
DCacheAddr: MCB_DDR3,C_S4_AXI_BASEADDR
DCacheAddr: MCB_DDR3,C_S5_AXI_BASEADDR
Processor: microblaze_0
ElfImp:
ElfSim:

View File

@ -1,112 +0,0 @@
#################################################################
# Makefile generated by Xilinx Platform Studio
# Project:C:\E\Dev\FreeRTOS\WorkingCopy\Demo\MicroBlaze_Spartan-6_EthernetFull\PlatformStudioProject\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.
#################################################################
SHELL = CMD
XILINX_EDK_DIR = C:/devtools/Xilinx/13.1/ISE_DS/EDK
SYSTEM = system
MHSFILE = system.mhs
FPGA_ARCH = spartan6
DEVICE = xc6slx45tfgg484-3
LANGUAGE = vhdl
GLOBAL_SEARCHPATHOPT =
PROJECT_SEARCHPATHOPT =
SEARCHPATHOPT = $(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT)
SUBMODULE_OPT =
PLATGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(SUBMODULE_OPT) -msg __xps/ise/xmsgprops.lst
OBSERVE_PAR_OPTIONS = -error yes
MICROBLAZE_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/microblaze/mb_bootloop.elf
MICROBLAZE_BOOTLOOP_LE = $(XILINX_EDK_DIR)/sw/lib/microblaze/mb_bootloop_le.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
MICROBLAZE_0_BOOTLOOP = $(BOOTLOOP_DIR)/microblaze_0.elf
BRAMINIT_ELF_IMP_FILES = $(MICROBLAZE_0_BOOTLOOP)
BRAMINIT_ELF_IMP_FILE_ARGS = -pe microblaze_0 $(MICROBLAZE_0_BOOTLOOP)
BRAMINIT_ELF_SIM_FILES = $(MICROBLAZE_0_BOOTLOOP)
BRAMINIT_ELF_SIM_FILE_ARGS = -pe microblaze_0 $(MICROBLAZE_0_BOOTLOOP)
SIM_CMD = isim_system
BEHAVIORAL_SIM_SCRIPT = simulation/behavioral/$(SYSTEM)_setup.tcl
STRUCTURAL_SIM_SCRIPT = simulation/structural/$(SYSTEM)_setup.tcl
TIMING_SIM_SCRIPT = simulation/timing/$(SYSTEM)_setup.tcl
DEFAULT_SIM_SCRIPT = $(BEHAVIORAL_SIM_SCRIPT)
MIX_LANG_SIM_OPT = -mixed yes
SIMGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_SIM_FILE_ARGS) $(MIX_LANG_SIM_OPT) -msg __xps/ise/xmsgprops.lst -s isim
CORE_STATE_DEVELOPMENT_FILES =
WRAPPER_NGC_FILES = implementation/axi4_0_wrapper.ngc \
implementation/axi4lite_0_wrapper.ngc \
implementation/microblaze_0_wrapper.ngc \
implementation/microblaze_0_ilmb_wrapper.ngc \
implementation/microblaze_0_dlmb_wrapper.ngc \
implementation/microblaze_0_i_bram_ctrl_wrapper.ngc \
implementation/microblaze_0_d_bram_ctrl_wrapper.ngc \
implementation/microblaze_0_bram_block_wrapper.ngc \
implementation/proc_sys_reset_0_wrapper.ngc \
implementation/clock_generator_0_wrapper.ngc \
implementation/debug_module_wrapper.ngc \
implementation/rs232_uart_1_wrapper.ngc \
implementation/dip_switches_4bits_wrapper.ngc \
implementation/leds_4bits_wrapper.ngc \
implementation/push_buttons_4bits_wrapper.ngc \
implementation/mcb_ddr3_wrapper.ngc \
implementation/ethernet_wrapper.ngc \
implementation/axi_timer_0_wrapper.ngc \
implementation/ethernet_dma_wrapper.ngc \
implementation/microblaze_0_intc_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) $(XFLOW_DEPENDENCY)
SDK_EXPORT_DIR = SDK\SDK_Export\hw
SYSTEM_HW_HANDOFF = $(SDK_EXPORT_DIR)/$(SYSTEM).xml
SYSTEM_HW_HANDOFF_BIT = $(SDK_EXPORT_DIR)/$(SYSTEM).bit
SYSTEM_HW_HANDOFF_BMM = $(SDK_EXPORT_DIR)/$(SYSTEM)_bd.bmm
SYSTEM_HW_HANDOFF_DEP = $(SYSTEM_HW_HANDOFF) $(SYSTEM_HW_HANDOFF_BIT) $(SYSTEM_HW_HANDOFF_BMM)

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>HardwareWithEthernetFull</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
<nature>com.xilinx.sdk.hw.HwProject</nature>
</natures>
</projectDescription>

View File

@ -1,32 +0,0 @@
// BMM LOC annotation file.
//
// Release 13.1 - Data2MEM O.40d, build 1.9 Aug 19, 2010
// Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0', ID 100, memory map.
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_MAP microblaze_0 MICROBLAZE-LE 100
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'microblaze_0_bram_block_combined' 0x00000000:0x00001FFF (8 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE microblaze_0_bram_block_combined RAMB16 [0x00000000:0x00001FFF]
BUS_BLOCK
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_0 [31:24] INPUT = microblaze_0_bram_block_combined_0.mem PLACED = X3Y34;
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_1 [23:16] INPUT = microblaze_0_bram_block_combined_1.mem PLACED = X3Y36;
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_2 [15:8] INPUT = microblaze_0_bram_block_combined_2.mem PLACED = X2Y32;
microblaze_0_bram_block/microblaze_0_bram_block/ramb16bwer_3 [7:0] INPUT = microblaze_0_bram_block_combined_3.mem PLACED = X2Y30;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;

View File

@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>RTOSDemo</name>
<comment>StandAloneBSP - microblaze_0</comment>
<projects>
<project>StandAloneBSP</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${workspace_loc:/RTOSDemo/Debug}</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@ -1,117 +0,0 @@
REM This file should be executed from the command line prior to the first
REM build. It will be necessary to refresh the Eclipse project once the
REM .bat file has been executed (normally just press F5 to refresh).
REM Copies all the required files from their location within the standard
REM FreeRTOS directory structure to under the Eclipse project directory.
REM This permits the Eclipse project to be used in 'managed' mode and without
REM having to setup any linked resources.
REM Files will also be copied into the BSP directory, which can be used to
REM generate FreeRTOS BSP packages directly from within the Xilinx SDK.
SET BSP_SOURCE=..\..\KernelAwareBSPRepository\bsp\freertos_v2_00_a\src\Source
REM Standard paths
SET FREERTOS_SOURCE=..\..\..\..\Source
SET COMMON_SOURCE=..\..\..\Common\minimal
SET COMMON_INCLUDE=..\..\..\Common\include
SET LWIP_SOURCE=..\..\..\Common\ethernet\lwip-1.4.0
REM Have the files already been copied?
IF EXIST FreeRTOS_Source Goto END
REM Create the required directory structure.
MD FreeRTOS_Source
MD FreeRTOS_Source\include
MD FreeRTOS_Source\portable\GCC
MD FreeRTOS_Source\portable\GCC\MicroBlazeV8
MD FreeRTOS_Source\portable\MemMang
MD Demo_Source
MD Demo_Source\include
MD lwIP\api
MD lwIP\core
MD lwIP\core\ipv4
MD lwIP\include
MD lwIP\include\ipv4
MD lwIP\include\ipv4\lwip
MD lwIP\include\lwip
MD lwIP\include\netif
MD lwIP\netif
MD lwIP\netif\include
MD lwIP\netif\include\arch
REM Copy the core kernel files into the SDK projects directory
copy %FREERTOS_SOURCE%\tasks.c FreeRTOS_Source
copy %FREERTOS_SOURCE%\queue.c FreeRTOS_Source
copy %FREERTOS_SOURCE%\list.c FreeRTOS_Source
copy %FREERTOS_SOURCE%\timers.c FreeRTOS_Source
REM Copy the core kernel files into the BSP directory
copy %FREERTOS_SOURCE%\tasks.c %BSP_SOURCE%
copy %FREERTOS_SOURCE%\queue.c %BSP_SOURCE%
copy %FREERTOS_SOURCE%\list.c %BSP_SOURCE%
copy %FREERTOS_SOURCE%\timers.c %BSP_SOURCE%
REM Copy the common header files into the SDK projects directory
copy %FREERTOS_SOURCE%\include\*.* FreeRTOS_Source\include
REM Copy the common header files into the BSP directory
copy %FREERTOS_SOURCE%\include\*.* %BSP_SOURCE%\include
REM Copy the portable layer files into the SDK projects directory
copy %FREERTOS_SOURCE%\portable\GCC\MicroBlazeV8\*.* FreeRTOS_Source\portable\GCC\MicroBlazeV8
REM Copy the portable layer files into the BSP projects directory
copy %FREERTOS_SOURCE%\portable\GCC\MicroBlazeV8\*.* %BSP_SOURCE%\portable\GCC\MicroBlazeV8
REM Copy the basic memory allocation files into the SDK projects directory
copy %FREERTOS_SOURCE%\portable\MemMang\heap_3.c FreeRTOS_Source\portable\MemMang
REM Copy the basic memory allocation files into the BSP directory
copy %FREERTOS_SOURCE%\portable\MemMang\heap_3.c %BSP_SOURCE%\portable\MemMang
REM Copy the files that define the common demo tasks.
copy %COMMON_SOURCE%\dynamic.c Demo_Source
copy %COMMON_SOURCE%\BlockQ.c Demo_Source
copy %COMMON_SOURCE%\death.c Demo_Source
copy %COMMON_SOURCE%\blocktim.c Demo_Source
copy %COMMON_SOURCE%\semtest.c Demo_Source
copy %COMMON_SOURCE%\PollQ.c Demo_Source
copy %COMMON_SOURCE%\GenQTest.c Demo_Source
copy %COMMON_SOURCE%\QPeek.c Demo_Source
copy %COMMON_SOURCE%\recmutex.c Demo_Source
copy %COMMON_SOURCE%\sp_flop.c Demo_Source
copy %COMMON_SOURCE%\flash.c Demo_Source
copy %COMMON_SOURCE%\comtest_strings.c Demo_Source
copy %COMMON_SOURCE%\TimerDemo.c Demo_Source
REM Copy the common demo file headers.
copy %COMMON_INCLUDE%\dynamic.h Demo_Source\include
copy %COMMON_INCLUDE%\partest.h Demo_Source\include
copy %COMMON_INCLUDE%\BlockQ.h Demo_Source\include
copy %COMMON_INCLUDE%\death.h Demo_Source\include
copy %COMMON_INCLUDE%\blocktim.h Demo_Source\include
copy %COMMON_INCLUDE%\semtest.h Demo_Source\include
copy %COMMON_INCLUDE%\PollQ.h Demo_Source\include
copy %COMMON_INCLUDE%\GenQTest.h Demo_Source\include
copy %COMMON_INCLUDE%\QPeek.h Demo_Source\include
copy %COMMON_INCLUDE%\recmutex.h Demo_Source\include
copy %COMMON_INCLUDE%\flop.h Demo_Source\include
copy %COMMON_INCLUDE%\flash.h Demo_Source\include
copy %COMMON_INCLUDE%\comtest_strings.h Demo_Source\include
copy %COMMON_INCLUDE%\serial.h Demo_Source\include
copy %COMMON_INCLUDE%\comtest.h Demo_Source\include
copy %COMMON_INCLUDE%\TimerDemo.h Demo_Source\include
REM Copy the required lwIP files
copy %LWIP_SOURCE%\src\api\*.c lwIP\api
copy %LWIP_SOURCE%\src\core\*.c lwIP\core
copy %LWIP_SOURCE%\src\core\ipv4\*.c lwIP\core\ipv4
copy %LWIP_SOURCE%\src\include\ipv4\lwip\*.h lwIP\include\ipv4\lwip
copy %LWIP_SOURCE%\src\include\lwip\*.h lwIP\include\lwip
copy %LWIP_SOURCE%\src\include\netif\*.h lwIP\include\netif
copy %LWIP_SOURCE%\src\netif\etharp.c lwIP\netif
copy %LWIP_SOURCE%\ports\MicroBlaze-Ethernet-Lite lwip\netif
copy %LWIP_SOURCE%\ports\MicroBlaze-Ethernet-Lite\include\arch lwip\netif\include\arch
: END

View File

@ -1,181 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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.
*/
/* The following #error directive is to remind users that a batch file must be
* executed prior to this project being built. The batch file *cannot* be
* executed from within older versions of Eclipse, but probably can be executed
* from within the Xilinx SDK. Once it has been executed, re-open or refresh
* the Eclipse project and remove the #error line below.
*/
//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above.
#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.
*
* See http://www.freertos.org/a00110.html.
*----------------------------------------------------------*/
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 1
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( XPAR_MICROBLAZE_CORE_CLOCK_FREQ_HZ ) /* Not actually used in this demo as the timer is set up in main() and uses the peripheral clock, not the CPU clock. */
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( 7 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 64 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 10 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 10
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_MALLOC_FAILED_HOOK 1
#define configUSE_APPLICATION_TASK_TAG 0
#define configUSE_COUNTING_SEMAPHORES 1
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 200 )
#define configINTERRUPT_STACK_SIZE configMINIMAL_STACK_SIZE
/* If configINSTALL_EXCEPTION_HANDLERS is set to 1, then the kernel will
automatically install its own exception handlers before the kernel is started,
if the application writer has not already caused them to be installed using the
vPortExceptionsInstallHandlers() API function. See the documentation page for
this demo on the FreeRTOS.org web site for more information. */
#define configINSTALL_EXCEPTION_HANDLERS 1
/* configINTERRUPT_CONTROLLER_TO_USE must be set to the ID of the interrupt
controller that is going to be used directly by FreeRTOS itself. Most hardware
designs will only include on interrupt controller. */
#define configINTERRUPT_CONTROLLER_TO_USE XPAR_INTC_SINGLE_DEVICE_ID
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Software timer definitions. */
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 4 )
#define configTIMER_QUEUE_LENGTH 10
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )
/* 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 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#define INCLUDE_pcTaskNameGet 1
#define INCLUDE_pcTaskNameGet 1
#define configASSERT( x ) if( ( x ) == 0 ) { portDISABLE_INTERRUPTS(); for( ;; ); }
/* Run time stats gathering definitions. The conditional compilation is to
prevent the C syntax being included in assembly files. */
#ifndef __ASSEMBLER__
unsigned long ulMainGetRunTimeCounterValue( void );
void vMainConfigureTimerForRunTimeStats( void );
#endif
#define configGENERATE_RUN_TIME_STATS 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vMainConfigureTimerForRunTimeStats()
#define portGET_RUN_TIME_COUNTER_VALUE() ulMainGetRunTimeCounterValue()
/* Networking configuration follows. */
#define configLWIP_TASK_PRIORITY ( configMAX_PRIORITIES - 4 )
/* MAC address configuration. */
#define configMAC_ADDR0 0x00
#define configMAC_ADDR1 0x12
#define configMAC_ADDR2 0x13
#define configMAC_ADDR3 0x10
#define configMAC_ADDR4 0x15
#define configMAC_ADDR5 0x11
/* IP address configuration. */
#define configIP_ADDR0 192
#define configIP_ADDR1 168
#define configIP_ADDR2 0
#define configIP_ADDR3 200
/* Gateway IP address configuration. */
#define configGW_IP_ADDR0 192
#define configGW_IP_ADDR1 168
#define configGW_IP_ADDR2 0
#define configGW_IP_ADDR3 3
/* Netmask configuration. */
#define configNET_MASK0 255
#define configNET_MASK1 255
#define configNET_MASK2 255
#define configNET_MASK3 0
#endif /* FREERTOS_CONFIG_H */

View File

@ -1,160 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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.
*/
/*-----------------------------------------------------------
* Simple digital IO routines.
*-----------------------------------------------------------*/
/* Kernel includes. */
#include "FreeRTOS.h"
/* Demo application includes. */
#include "partest.h"
/* Library includes. */
#include "xgpio.h"
/* The hardware design that accompanies this demo project has four LED
outputs. */
#define partstMAX_LED 4
/*-----------------------------------------------------------*/
/* A hardware specific constant required to use the Xilinx driver library. */
static const unsigned portBASE_TYPE uxGPIOOutputChannel = 1UL;
/* The current state of the output port. */
static unsigned char ucGPIOState = 0U;
/* Structure that hold the state of the ouptut peripheral used by this demo.
This is used by the Xilinx peripheral driver API functions. */
static XGpio xOutputGPIOInstance;
/*
* Setup the IO for the LED outputs.
*/
void vParTestInitialise( void )
{
portBASE_TYPE xStatus;
const unsigned char ucSetToOutput = 0U;
/* Initialise the GPIO for the LEDs. */
xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );
if( xStatus == XST_SUCCESS )
{
/* All bits on this channel are going to be outputs (LEDs). */
XGpio_SetDataDirection( &xOutputGPIOInstance, uxGPIOOutputChannel, ucSetToOutput );
/* Start with all LEDs off. */
ucGPIOState = 0U;
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
}
configASSERT( xStatus == XST_SUCCESS );
}
/*-----------------------------------------------------------*/
void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
{
unsigned char ucLED = 1U;
/* Only attempt to set the LED if it is in range. */
if( uxLED < partstMAX_LED )
{
ucLED <<= ( unsigned char ) uxLED;
portENTER_CRITICAL();
{
if( xValue == pdFALSE )
{
ucGPIOState &= ~ucLED;
}
else
{
ucGPIOState |= ucLED;
}
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
}
portEXIT_CRITICAL();
}
}
/*-----------------------------------------------------------*/
void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
{
unsigned char ucLED = 1U;
/* Only attempt to toggle the LED if it is in range. */
if( uxLED < partstMAX_LED )
{
ucLED <<= ( unsigned char ) uxLED;
portENTER_CRITICAL();
{
if( ( ucGPIOState & ucLED ) != 0 )
{
ucGPIOState &= ~ucLED;
}
else
{
ucGPIOState |= ucLED;
}
XGpio_DiscreteWrite( &xOutputGPIOInstance, uxGPIOOutputChannel, ucGPIOState );
}
portEXIT_CRITICAL();
}
}

View File

@ -1,307 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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"
#include "task.h"
/*
* The register test task as described in the comments at the top of main-full.c.
*/
void vRegisterTest1( void *pvParameters );
void vRegisterTest2( void *pvParameters );
/* Variables that are incremented on each iteration of the reg test tasks -
provided the tasks have not reported any errors. The check timer inspects these
variables to ensure they are still incrementing as expected. If a variable
stops incrementing then it is likely that its associate task has stalled or
detected an error. */
volatile unsigned long ulRegTest1CycleCount = 0UL, ulRegTest2CycleCount = 0UL;
/*-----------------------------------------------------------*/
void vRegisterTest1( void *pvParameters )
{
/* This task uses an infinite loop that is implemented in the assembly
code.
First fill the relevant registers with known values. */
asm volatile ( " addi r3, r0, 3 \n\t" \
" addi r4, r0, 4 \n\t" \
" addi r6, r0, 6 \n\t" \
" addi r7, r0, 7 \n\t" \
" addi r8, r0, 8 \n\t" \
" addi r9, r0, 9 \n\t" \
" addi r10, r0, 10 \n\t" \
" addi r11, r0, 11 \n\t" \
" addi r12, r0, 12 \n\t" \
" addi r16, r0, 16 \n\t" \
" addi r19, r0, 19 \n\t" \
" addi r20, r0, 20 \n\t" \
" addi r21, r0, 21 \n\t" \
" addi r22, r0, 22 \n\t" \
" addi r23, r0, 23 \n\t" \
" addi r24, r0, 24 \n\t" \
" addi r25, r0, 25 \n\t" \
" addi r26, r0, 26 \n\t" \
" addi r27, r0, 27 \n\t" \
" addi r28, r0, 28 \n\t" \
" addi r29, r0, 29 \n\t" \
" addi r30, r0, 30 \n\t" \
" addi r31, r0, 31 \n\t"
);
/* Now test the register values to ensure they contain the same value that
was written to them above. This task will get preempted frequently so
other tasks are likely to have executed since the register values were
written. If any register contains an unexpected value then the task will
branch to Error_Loop_1, which in turn prevents it from incrementing its
loop counter, enabling the check timer to determine that all is not as it
should be. */
asm volatile ( "Loop_Start_1: \n\t" \
" xori r18, r3, 3 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r4, 4 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r6, 6 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r7, 7 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r8, 8 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r9, 9 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r10, 10 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r11, 11 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r12, 12 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r16, 16 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r19, 19 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r20, 20 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r21, 21 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r22, 22 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r23, 23 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r24, 24 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r25, 25 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r26, 26 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r27, 27 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r28, 28 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r29, 29 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r30, 30 \n\t" \
" bnei r18, Error_Loop_1 \n\t" \
" xori r18, r31, 31 \n\t" \
" bnei r18, Error_Loop_1 \n\t"
);
/* If this task has not branched to the error loop, then everything is ok,
and the check variable can be incremented to indicate that this task
is still running. Then, brach back to the top to check the register
contents again. */
asm volatile ( " lwi r18, r0, ulRegTest1CycleCount \n\t" \
" addik r18, r18, 1 \n\t" \
" swi r18, r0, ulRegTest1CycleCount \n\t" \
" \n\t" \
" bri Loop_Start_1 "
);
/* The test function will branch here if it discovers an error. This part
of the code just sits in a NULL loop, which prevents the check variable
incrementing any further to allow the check timer to recognize that this
test has failed. */
asm volatile ( "Error_Loop_1: \n\t" \
" bri 0 \n\t" \
" nop \n\t" \
);
( void ) pvParameters;
}
/*-----------------------------------------------------------*/
void vRegisterTest2( void *pvParameters )
{
/* This task uses an infinite loop that is implemented in the assembly
code.
First fill the registers with known values. */
asm volatile ( " addi r16, r0, 1016 \n\t" \
" addi r19, r0, 1019 \n\t" \
" addi r20, r0, 1020 \n\t" \
" addi r21, r0, 1021 \n\t" \
" addi r22, r0, 1022 \n\t" \
" addi r23, r0, 1023 \n\t" \
" addi r24, r0, 1024 \n\t" \
" addi r25, r0, 1025 \n\t" \
" addi r26, r0, 1026 \n\t" \
" addi r27, r0, 1027 \n\t" \
" addi r28, r0, 1028 \n\t" \
" addi r29, r0, 1029 \n\t" \
" addi r30, r0, 1030 \n\t" \
" addi r31, r0, 1031 \n\t" \
" " \
"Loop_Start_2: "
);
/* Unlike vRegisterTest1, vRegisterTest2 performs a yield. This increases
the test coverage, but does mean volatile registers need re-loading with
their exepcted values. */
taskYIELD();
/* taskYIELD() could have changed temporaries - set them back to those
expected by the reg test task. */
asm volatile ( " addi r3, r0, 103 \n\t" \
" addi r4, r0, 104 \n\t" \
" addi r6, r0, 106 \n\t" \
" addi r7, r0, 107 \n\t" \
" addi r8, r0, 108 \n\t" \
" addi r9, r0, 109 \n\t" \
" addi r10, r0, 1010 \n\t" \
" addi r11, r0, 1011 \n\t" \
" addi r12, r0, 1012 \n\t" \
);
/* Now test the register values to ensure they contain the same value that
was written to them above. This task will get preempted frequently so
other tasks are likely to have executed since the register values were
written. */
asm volatile ( " xori r18, r3, 103 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r4, 104 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r6, 106 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r7, 107 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r8, 108 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r9, 109 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r10, 1010 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r11, 1011 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r12, 1012 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r16, 1016 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r19, 1019 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r20, 1020 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r21, 1021 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r22, 1022 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r23, 1023 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r24, 1024 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r25, 1025 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r26, 1026 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r27, 1027 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r28, 1028 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r29, 1029 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r30, 1030 \n\t" \
" bnei r18, Error_Loop_2 \n\t" \
" xori r18, r31, 1031 \n\t" \
" bnei r18, Error_Loop_2 \n\t"
);
/* If this task has not branched to the error loop, then everything is ok,
and the check variable should be incremented to indicate that this task
is still running. Then, brach back to the top to check the registers
again. */
asm volatile ( " lwi r18, r0, ulRegTest2CycleCount \n\t" \
" addik r18, r18, 1 \n\t" \
" swi r18, r0, ulRegTest2CycleCount \n\t" \
" \n\t" \
" bri Loop_Start_2 "
);
/* The test function will branch here if it discovers an error. This part
of the code just sits in a NULL loop, which prevents the check variable
incrementing any further to allow the check timer to recognize that this
test has failed. */
asm volatile ( "Error_Loop_2: \n\t" \
" bri 0 \n\t" \
" nop \n\t" \
);
( void ) pvParameters;
}

View File

@ -1,177 +0,0 @@
/*
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/
#include "lwip/opt.h"
#include "lwip/def.h"
#include "fs.h"
#include "fsdata.h"
#include <string.h>
/** Set this to 1 to include "fsdata_custom.c" instead of "fsdata.c" for the
* file system (to prevent changing the file included in CVS) */
#ifndef HTTPD_USE_CUSTUM_FSDATA
#define HTTPD_USE_CUSTUM_FSDATA 0
#endif
#if HTTPD_USE_CUSTUM_FSDATA
#include "fsdata_custom.c"
#else /* HTTPD_USE_CUSTUM_FSDATA */
#include "fsdata.c"
#endif /* HTTPD_USE_CUSTUM_FSDATA */
/*-----------------------------------------------------------------------------------*/
/* Define the number of open files that we can support. */
#ifndef LWIP_MAX_OPEN_FILES
#define LWIP_MAX_OPEN_FILES 10
#endif
/* Define the file system memory allocation structure. */
struct fs_table {
struct fs_file file;
u8_t inuse;
};
/* Allocate file system memory */
struct fs_table fs_memory[LWIP_MAX_OPEN_FILES];
#if LWIP_HTTPD_CUSTOM_FILES
int fs_open_custom(struct fs_file *file, const char *name);
void fs_close_custom(struct fs_file *file);
#endif /* LWIP_HTTPD_CUSTOM_FILES */
/*-----------------------------------------------------------------------------------*/
static struct fs_file *
fs_malloc(void)
{
int i;
for(i = 0; i < LWIP_MAX_OPEN_FILES; i++) {
if(fs_memory[i].inuse == 0) {
fs_memory[i].inuse = 1;
return(&fs_memory[i].file);
}
}
return(NULL);
}
/*-----------------------------------------------------------------------------------*/
static void
fs_free(struct fs_file *file)
{
int i;
for(i = 0; i < LWIP_MAX_OPEN_FILES; i++) {
if(&fs_memory[i].file == file) {
fs_memory[i].inuse = 0;
break;
}
}
return;
}
/*-----------------------------------------------------------------------------------*/
struct fs_file *
fs_open(const char *name)
{
struct fs_file *file;
const struct fsdata_file *f;
file = fs_malloc();
if(file == NULL) {
return NULL;
}
#if LWIP_HTTPD_CUSTOM_FILES
if(fs_open_custom(file, name)) {
file->is_custom_file = 1;
return file;
}
file->is_custom_file = 0;
#endif /* LWIP_HTTPD_CUSTOM_FILES */
for(f = FS_ROOT; f != NULL; f = f->next) {
if (!strcmp(name, (char *)f->name)) {
file->data = (const char *)f->data;
file->len = f->len;
file->index = f->len;
file->pextension = NULL;
file->http_header_included = f->http_header_included;
#if HTTPD_PRECALCULATED_CHECKSUM
file->chksum_count = f->chksum_count;
file->chksum = f->chksum;
#endif /* HTTPD_PRECALCULATED_CHECKSUM */
#if LWIP_HTTPD_FILE_STATE
file->state = fs_state_init(file, name);
#endif /* #if LWIP_HTTPD_FILE_STATE */
return file;
}
}
fs_free(file);
return NULL;
}
/*-----------------------------------------------------------------------------------*/
void
fs_close(struct fs_file *file)
{
#if LWIP_HTTPD_CUSTOM_FILES
if (file->is_custom_file) {
fs_close_custom(file);
}
#endif /* LWIP_HTTPD_CUSTOM_FILES */
#if LWIP_HTTPD_FILE_STATE
fs_state_free(file, file->state);
#endif /* #if LWIP_HTTPD_FILE_STATE */
fs_free(file);
}
/*-----------------------------------------------------------------------------------*/
int
fs_read(struct fs_file *file, char *buffer, int count)
{
int read;
if(file->index == file->len) {
return -1;
}
read = file->len - file->index;
if(read > count) {
read = count;
}
MEMCPY(buffer, (file->data + file->index), read);
file->index += read;
return(read);
}
/*-----------------------------------------------------------------------------------*/
int fs_bytes_left(struct fs_file *file)
{
return file->len - file->index;
}

View File

@ -1,100 +0,0 @@
/*
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/
#ifndef __FS_H__
#define __FS_H__
#include "lwip/opt.h"
/** Set this to 1 and provide the functions:
* - "int fs_open_custom(struct fs_file *file, const char *name)"
* Called first for every opened file to allow opening files
* that are not included in fsdata(_custom).c
* - "void fs_close_custom(struct fs_file *file)"
* Called to free resources allocated by fs_open_custom().
*/
#ifndef LWIP_HTTPD_CUSTOM_FILES
#define LWIP_HTTPD_CUSTOM_FILES 0
#endif
/** Set this to 1 to include an application state argument per file
* that is opened. This allows to keep a state per connection/file.
*/
#ifndef LWIP_HTTPD_FILE_STATE
#define LWIP_HTTPD_FILE_STATE 0
#endif
/** HTTPD_PRECALCULATED_CHECKSUM==1: include precompiled checksums for
* predefined (MSS-sized) chunks of the files to prevent having to calculate
* the checksums at runtime. */
#ifndef HTTPD_PRECALCULATED_CHECKSUM
#define HTTPD_PRECALCULATED_CHECKSUM 0
#endif
#if HTTPD_PRECALCULATED_CHECKSUM
struct fsdata_chksum {
u32_t offset;
u16_t chksum;
u16_t len;
};
#endif /* HTTPD_PRECALCULATED_CHECKSUM */
struct fs_file {
const char *data;
int len;
int index;
void *pextension;
#if HTTPD_PRECALCULATED_CHECKSUM
const struct fsdata_chksum *chksum;
u16_t chksum_count;
#endif /* HTTPD_PRECALCULATED_CHECKSUM */
u8_t http_header_included;
#if LWIP_HTTPD_CUSTOM_FILES
u8_t is_custom_file;
#endif /* LWIP_HTTPD_CUSTOM_FILES */
#if LWIP_HTTPD_FILE_STATE
void *state;
#endif /* LWIP_HTTPD_FILE_STATE */
};
struct fs_file *fs_open(const char *name);
void fs_close(struct fs_file *file);
int fs_read(struct fs_file *file, char *buffer, int count);
int fs_bytes_left(struct fs_file *file);
#if LWIP_HTTPD_FILE_STATE
/** This user-defined function is called when a file is opened. */
void *fs_state_init(struct fs_file *file, const char *name);
/** This user-defined function is called when a file is closed. */
void fs_state_free(struct fs_file *file, void *state);
#endif /* #if LWIP_HTTPD_FILE_STATE */
#endif /* __FS_H__ */

View File

@ -1,50 +0,0 @@
/*
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/
#ifndef __FSDATA_H__
#define __FSDATA_H__
#include "lwip/opt.h"
#include "fs.h"
struct fsdata_file {
const struct fsdata_file *next;
const unsigned char *name;
const unsigned char *data;
int len;
u8_t http_header_included;
#if HTTPD_PRECALCULATED_CHECKSUM
u16_t chksum_count;
const struct fsdata_chksum *chksum;
#endif /* HTTPD_PRECALCULATED_CHECKSUM */
};
#endif /* __FSDATA_H__ */

View File

@ -1,236 +0,0 @@
/*
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
* This version of the file has been modified by Texas Instruments to offer
* simple server-side-include (SSI) and Common Gateway Interface (CGI)
* capability.
*/
#ifndef __HTTPD_H__
#define __HTTPD_H__
#include "lwip/opt.h"
#include "lwip/err.h"
#include "lwip/pbuf.h"
/** Set this to 1 to support CGI */
#ifndef LWIP_HTTPD_CGI
#define LWIP_HTTPD_CGI 0
#endif
/** Set this to 1 to support SSI (Server-Side-Includes) */
#ifndef LWIP_HTTPD_SSI
#define LWIP_HTTPD_SSI 1
#endif
/** Set this to 1 to support HTTP POST */
#ifndef LWIP_HTTPD_SUPPORT_POST
#define LWIP_HTTPD_SUPPORT_POST 0
#endif
#if LWIP_HTTPD_CGI
/*
* Function pointer for a CGI script handler.
*
* This function is called each time the HTTPD server is asked for a file
* whose name was previously registered as a CGI function using a call to
* http_set_cgi_handler. The iIndex parameter provides the index of the
* CGI within the ppcURLs array passed to http_set_cgi_handler. Parameters
* pcParam and pcValue provide access to the parameters provided along with
* the URI. iNumParams provides a count of the entries in the pcParam and
* pcValue arrays. Each entry in the pcParam array contains the name of a
* parameter with the corresponding entry in the pcValue array containing the
* value for that parameter. Note that pcParam may contain multiple elements
* with the same name if, for example, a multi-selection list control is used
* in the form generating the data.
*
* The function should return a pointer to a character string which is the
* path and filename of the response that is to be sent to the connected
* browser, for example "/thanks.htm" or "/response/error.ssi".
*
* The maximum number of parameters that will be passed to this function via
* iNumParams is defined by LWIP_HTTPD_MAX_CGI_PARAMETERS. Any parameters in the incoming
* HTTP request above this number will be discarded.
*
* Requests intended for use by this CGI mechanism must be sent using the GET
* method (which encodes all parameters within the URI rather than in a block
* later in the request). Attempts to use the POST method will result in the
* request being ignored.
*
*/
typedef const char *(*tCGIHandler)(int iIndex, int iNumParams, char *pcParam[],
char *pcValue[]);
/*
* Structure defining the base filename (URL) of a CGI and the associated
* function which is to be called when that URL is requested.
*/
typedef struct
{
const char *pcCGIName;
tCGIHandler pfnCGIHandler;
} tCGI;
void http_set_cgi_handlers(const tCGI *pCGIs, int iNumHandlers);
/* The maximum number of parameters that the CGI handler can be sent. */
#ifndef LWIP_HTTPD_MAX_CGI_PARAMETERS
#define LWIP_HTTPD_MAX_CGI_PARAMETERS 16
#endif
#endif /* LWIP_HTTPD_CGI */
#if LWIP_HTTPD_SSI
/** LWIP_HTTPD_SSI_MULTIPART==1: SSI handler function is called with 2 more
* arguments indicating a counter for insert string that are too long to be
* inserted at once: the SSI handler function must then set 'next_tag_part'
* which will be passed back to it in the next call. */
#ifndef LWIP_HTTPD_SSI_MULTIPART
#define LWIP_HTTPD_SSI_MULTIPART 0
#endif
/*
* Function pointer for the SSI tag handler callback.
*
* This function will be called each time the HTTPD server detects a tag of the
* form <!--#name--> in a .shtml, .ssi or .shtm file where "name" appears as
* one of the tags supplied to http_set_ssi_handler in the ppcTags array. The
* returned insert string, which will be appended after the the string
* "<!--#name-->" in file sent back to the client,should be written to pointer
* pcInsert. iInsertLen contains the size of the buffer pointed to by
* pcInsert. The iIndex parameter provides the zero-based index of the tag as
* found in the ppcTags array and identifies the tag that is to be processed.
*
* The handler returns the number of characters written to pcInsert excluding
* any terminating NULL or a negative number to indicate a failure (tag not
* recognized, for example).
*
* Note that the behavior of this SSI mechanism is somewhat different from the
* "normal" SSI processing as found in, for example, the Apache web server. In
* this case, the inserted text is appended following the SSI tag rather than
* replacing the tag entirely. This allows for an implementation that does not
* require significant additional buffering of output data yet which will still
* offer usable SSI functionality. One downside to this approach is when
* attempting to use SSI within JavaScript. The SSI tag is structured to
* resemble an HTML comment but this syntax does not constitute a comment
* within JavaScript and, hence, leaving the tag in place will result in
* problems in these cases. To work around this, any SSI tag which needs to
* output JavaScript code must do so in an encapsulated way, sending the whole
* HTML <script>...</script> section as a single include.
*/
typedef u16_t (*tSSIHandler)(int iIndex, char *pcInsert, int iInsertLen
#if LWIP_HTTPD_SSI_MULTIPART
, u16_t current_tag_part, u16_t *next_tag_part
#endif /* LWIP_HTTPD_SSI_MULTIPART */
#if LWIP_HTTPD_FILE_STATE
, void *connection_state
#endif /* LWIP_HTTPD_FILE_STATE */
);
void http_set_ssi_handler(tSSIHandler pfnSSIHandler,
const char **ppcTags, int iNumTags);
/* The maximum length of the string comprising the tag name */
#ifndef LWIP_HTTPD_MAX_TAG_NAME_LEN
#define LWIP_HTTPD_MAX_TAG_NAME_LEN 8
#endif
/* The maximum length of string that can be returned to replace any given tag */
#ifndef LWIP_HTTPD_MAX_TAG_INSERT_LEN
#define LWIP_HTTPD_MAX_TAG_INSERT_LEN 192
#endif
#endif /* LWIP_HTTPD_SSI */
#if LWIP_HTTPD_SUPPORT_POST
/* These functions must be implemented by the application */
/** Called when a POST request has been received. The application can decide
* whether to accept it or not.
*
* @param connection Unique connection identifier, valid until httpd_post_end
* is called.
* @param uri The HTTP header URI receiving the POST request.
* @param http_request The raw HTTP request (the first packet, normally).
* @param http_request_len Size of 'http_request'.
* @param content_len Content-Length from HTTP header.
* @param response_uri Filename of response file, to be filled when denying the
* request
* @param response_uri_len Size of the 'response_uri' buffer.
* @param post_auto_wnd Set this to 0 to let the callback code handle window
* updates by calling 'httpd_post_data_recved' (to throttle rx speed)
* default is 1 (httpd handles window updates automatically)
* @return ERR_OK: Accept the POST request, data may be passed in
* another err_t: Deny the POST request, send back 'bad request'.
*/
err_t httpd_post_begin(void *connection, const char *uri, const char *http_request,
u16_t http_request_len, int content_len, char *response_uri,
u16_t response_uri_len, u8_t *post_auto_wnd);
/** Called for each pbuf of data that has been received for a POST.
* ATTENTION: The application is responsible for freeing the pbufs passed in!
*
* @param connection Unique connection identifier.
* @param p Received data.
* @return ERR_OK: Data accepted.
* another err_t: Data denied, http_post_get_response_uri will be called.
*/
err_t httpd_post_receive_data(void *connection, struct pbuf *p);
/** Called when all data is received or when the connection is closed.
* The application must return the filename/URI of a file to send in response
* to this POST request. If the response_uri buffer is untouched, a 404
* response is returned.
*
* @param connection Unique connection identifier.
* @param response_uri Filename of response file, to be filled when denying the request
* @param response_uri_len Size of the 'response_uri' buffer.
*/
void httpd_post_finished(void *connection, char *response_uri, u16_t response_uri_len);
#ifndef LWIP_HTTPD_POST_MANUAL_WND
#define LWIP_HTTPD_POST_MANUAL_WND 0
#endif
#if LWIP_HTTPD_POST_MANUAL_WND
void httpd_post_data_recved(void *connection, u16_t recved_len);
#endif /* LWIP_HTTPD_POST_MANUAL_WND */
#endif /* LWIP_HTTPD_SUPPORT_POST */
void httpd_init(void);
#endif /* __HTTPD_H__ */

View File

@ -1,115 +0,0 @@
#ifndef __HTTPD_STRUCTS_H__
#define __HTTPD_STRUCTS_H__
#include "httpd.h"
/** This string is passed in the HTTP header as "Server: " */
#ifndef HTTPD_SERVER_AGENT
#define HTTPD_SERVER_AGENT "lwIP/1.3.1 (http://savannah.nongnu.org/projects/lwip)"
#endif
/** Set this to 1 if you want to include code that creates HTTP headers
* at runtime. Default is off: HTTP headers are then created statically
* by the makefsdata tool. Static headers mean smaller code size, but
* the (readonly) fsdata will grow a bit as every file includes the HTTP
* header. */
#ifndef LWIP_HTTPD_DYNAMIC_HEADERS
#define LWIP_HTTPD_DYNAMIC_HEADERS 0
#endif
#if LWIP_HTTPD_DYNAMIC_HEADERS
/** This struct is used for a list of HTTP header strings for various
* filename extensions. */
typedef struct
{
const char *extension;
int headerIndex;
} tHTTPHeader;
/** A list of strings used in HTTP headers */
static const char * const g_psHTTPHeaderStrings[] =
{
"Content-type: text/html\r\n\r\n",
"Content-type: text/html\r\nExpires: Fri, 10 Apr 2008 14:00:00 GMT\r\nPragma: no-cache\r\n\r\n",
"Content-type: image/gif\r\n\r\n",
"Content-type: image/png\r\n\r\n",
"Content-type: image/jpeg\r\n\r\n",
"Content-type: image/bmp\r\n\r\n",
"Content-type: image/x-icon\r\n\r\n",
"Content-type: application/octet-stream\r\n\r\n",
"Content-type: application/x-javascript\r\n\r\n",
"Content-type: application/x-javascript\r\n\r\n",
"Content-type: text/css\r\n\r\n",
"Content-type: application/x-shockwave-flash\r\n\r\n",
"Content-type: text/xml\r\n\r\n",
"Content-type: text/plain\r\n\r\n",
"HTTP/1.0 200 OK\r\n",
"HTTP/1.0 404 File not found\r\n",
"HTTP/1.0 400 Bad Request\r\n",
"HTTP/1.0 501 Not Implemented\r\n",
"HTTP/1.1 200 OK\r\n",
"HTTP/1.1 404 File not found\r\n",
"HTTP/1.1 400 Bad Request\r\n",
"HTTP/1.1 501 Not Implemented\r\n",
"Content-Length: ",
"Connection: Close\r\n",
"Server: "HTTPD_SERVER_AGENT"\r\n",
"\r\n<html><body><h2>404: The requested file cannot be found.</h2></body></html>\r\n"
};
/* Indexes into the g_psHTTPHeaderStrings array */
#define HTTP_HDR_HTML 0 /* text/html */
#define HTTP_HDR_SSI 1 /* text/html Expires... */
#define HTTP_HDR_GIF 2 /* image/gif */
#define HTTP_HDR_PNG 3 /* image/png */
#define HTTP_HDR_JPG 4 /* image/jpeg */
#define HTTP_HDR_BMP 5 /* image/bmp */
#define HTTP_HDR_ICO 6 /* image/x-icon */
#define HTTP_HDR_APP 7 /* application/octet-stream */
#define HTTP_HDR_JS 8 /* application/x-javascript */
#define HTTP_HDR_RA 9 /* application/x-javascript */
#define HTTP_HDR_CSS 10 /* text/css */
#define HTTP_HDR_SWF 11 /* application/x-shockwave-flash */
#define HTTP_HDR_XML 12 /* text/xml */
#define HTTP_HDR_DEFAULT_TYPE 13 /* text/plain */
#define HTTP_HDR_OK 14 /* 200 OK */
#define HTTP_HDR_NOT_FOUND 15 /* 404 File not found */
#define HTTP_HDR_BAD_REQUEST 16 /* 400 Bad request */
#define HTTP_HDR_NOT_IMPL 17 /* 501 Not Implemented */
#define HTTP_HDR_OK_11 18 /* 200 OK */
#define HTTP_HDR_NOT_FOUND_11 19 /* 404 File not found */
#define HTTP_HDR_BAD_REQUEST_11 20 /* 400 Bad request */
#define HTTP_HDR_NOT_IMPL_11 21 /* 501 Not Implemented */
#define HTTP_HDR_CONTENT_LENGTH 22 /* Content-Length: (HTTP 1.1)*/
#define HTTP_HDR_CONN_CLOSE 23 /* Connection: Close (HTTP 1.1) */
#define HTTP_HDR_SERVER 24 /* Server: HTTPD_SERVER_AGENT */
#define DEFAULT_404_HTML 25 /* default 404 body */
/** A list of extension-to-HTTP header strings */
const static tHTTPHeader g_psHTTPHeaders[] =
{
{ "html", HTTP_HDR_HTML},
{ "htm", HTTP_HDR_HTML},
{ "shtml",HTTP_HDR_SSI},
{ "shtm", HTTP_HDR_SSI},
{ "ssi", HTTP_HDR_SSI},
{ "gif", HTTP_HDR_GIF},
{ "png", HTTP_HDR_PNG},
{ "jpg", HTTP_HDR_JPG},
{ "bmp", HTTP_HDR_BMP},
{ "ico", HTTP_HDR_ICO},
{ "class",HTTP_HDR_APP},
{ "cls", HTTP_HDR_APP},
{ "js", HTTP_HDR_JS},
{ "ram", HTTP_HDR_RA},
{ "css", HTTP_HDR_CSS},
{ "swf", HTTP_HDR_SWF},
{ "xml", HTTP_HDR_XML}
};
#define NUM_HTTP_HEADERS (sizeof(g_psHTTPHeaders) / sizeof(tHTTPHeader))
#endif /* LWIP_HTTPD_DYNAMIC_HEADERS */
#endif /* __HTTPD_STRUCTS_H__ */

View File

@ -1,21 +0,0 @@
<html>
<head><title>lwIP - A Lightweight TCP/IP Stack</title></head>
<body bgcolor="white" text="black">
<table width="100%">
<tr valign="top"><td width="80">
<a href="http://www.sics.se/"><img src="/img/sics.gif"
border="0" alt="SICS logo" title="SICS logo"></a>
</td><td width="500">
<h1>lwIP - A Lightweight TCP/IP Stack</h1>
<h2>404 - Page not found</h2>
<p>
Sorry, the page you are requesting was not found on this
server.
</p>
</td><td>
&nbsp;
</td></tr>
</table>
</body>
</html>

View File

@ -1,20 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org lwIP WEB server demo</title>
</head>
<BODY onLoad="window.setTimeout(&quot;location.href='index.shtml'&quot;,2000)">
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<br><p>
<h2>Task statistics</h2>
Page will refresh every 2 seconds.<p>
<font face="courier"><pre>Task State Priority Stack #<br>************************************************<br>
<!--#rtos_stats-->
</pre></font>
</font>
</body>
</html>

View File

@ -1,20 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>FreeRTOS.org lwIP WEB server demo</title>
</head>
<BODY onLoad="window.setTimeout(&quot;location.href='runtime.shtml'&quot;,2000)">
<font face="arial">
<a href="index.shtml">Task Stats</a> <b>|</b> <a href="runtime.shtml">Run Time Stats</a> <b>|</b> <a href="http://www.freertos.org/">FreeRTOS Homepage</a> <b>|</b> <a href="logo.jpg">37K jpg</a>
<br><p>
<hr>
<br><p>
<h2>Run-time statistics</h2>
Page will refresh every 2 seconds.<p>
<font face="courier"><pre>Task Abs Time % Time<br>****************************************<br>
<!--#run_stats-->
</pre></font>
</font>
</body>
</html>

View File

@ -1,610 +0,0 @@
/**
* makefsdata: Converts a directory structure for use with the lwIP httpd.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Jim Pettinato
* Simon Goldschmidt
*
* @todo:
* - take TCP_MSS, LWIP_TCP_TIMESTAMPS and
* PAYLOAD_ALIGN_TYPE/PAYLOAD_ALIGNMENT as arguments
*/
#include <stdio.h>
#include <stdlib.h>
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
#else
#include <dir.h>
#endif
#include <dos.h>
#include <string.h>
/* Compatibility defines Win32 vs. DOS */
#ifdef WIN32
#define FIND_T WIN32_FIND_DATAA
#define FIND_T_FILENAME(fInfo) (fInfo.cFileName)
#define FIND_T_IS_DIR(fInfo) ((fInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
#define FIND_T_IS_FILE(fInfo) ((fInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
#define FIND_RET_T HANDLE
#define FINDFIRST_FILE(path, result) FindFirstFileA(path, result)
#define FINDFIRST_DIR(path, result) FindFirstFileA(path, result)
#define FINDNEXT(ff_res, result) FindNextFileA(ff_res, result)
#define FINDFIRST_SUCCEEDED(ret) (ret != INVALID_HANDLE_VALUE)
#define FINDNEXT_SUCCEEDED(ret) (ret == TRUE)
#define GETCWD(path, len) GetCurrentDirectoryA(len, path)
#define CHDIR(path) SetCurrentDirectoryA(path)
#define NEWLINE "\r\n"
#define NEWLINE_LEN 2
#else
#define FIND_T struct fflbk
#define FIND_T_FILENAME(fInfo) (fInfo.ff_name)
#define FIND_T_IS_DIR(fInfo) ((fInfo.ff_attrib & FA_DIREC) == FA_DIREC)
#define FIND_T_IS_FILE(fInfo) (1)
#define FIND_RET_T int
#define FINDFIRST_FILE(path, result) findfirst(path, result, FA_ARCH)
#define FINDFIRST_DIR(path, result) findfirst(path, result, FA_DIREC)
#define FINDNEXT(ff_res, result) FindNextFileA(ff_res, result)
#define FINDFIRST_SUCCEEDED(ret) (ret == 0)
#define FINDNEXT_SUCCEEDED(ret) (ret == 0)
#define GETCWD(path, len) getcwd(path, len)
#define CHDIR(path) chdir(path)
#endif
/* define this to get the header variables we use to build HTTP headers */
#define LWIP_HTTPD_DYNAMIC_HEADERS 1
#include "../httpd_structs.h"
#include "../../../lwip-1.4.0/src/core/ipv4/inet_chksum.c"
#include "../../../lwip-1.4.0/src/core/def.c"
/** (Your server name here) */
const char *serverID = "Server: "HTTPD_SERVER_AGENT"\r\n";
/* change this to suit your MEM_ALIGNMENT */
#define PAYLOAD_ALIGNMENT 4
/* set this to 0 to prevent aligning payload */
#define ALIGN_PAYLOAD 1
/* define this to a type that has the required alignment */
#define PAYLOAD_ALIGN_TYPE "unsigned int"
static int payload_alingment_dummy_counter = 0;
#define HEX_BYTES_PER_LINE 16
#define MAX_PATH_LEN 256
#define COPY_BUFSIZE 10240
int process_sub(FILE *data_file, FILE *struct_file);
int process_file(FILE *data_file, FILE *struct_file, const char *filename);
int file_write_http_header(FILE *data_file, const char *filename, int file_size,
u16_t *http_hdr_len, u16_t *http_hdr_chksum);
int file_put_ascii(FILE *file, const char *ascii_string, int len, int *i);
int s_put_ascii(char *buf, const char *ascii_string, int len, int *i);
void concat_files(const char *file1, const char *file2, const char *targetfile);
static unsigned char file_buffer_raw[COPY_BUFSIZE];
/* 5 bytes per char + 3 bytes per line */
static char file_buffer_c[COPY_BUFSIZE * 5 + ((COPY_BUFSIZE / HEX_BYTES_PER_LINE) * 3)];
char curSubdir[MAX_PATH_LEN];
char lastFileVar[MAX_PATH_LEN];
char hdr_buf[4096];
unsigned char processSubs = 1;
unsigned char includeHttpHeader = 1;
unsigned char useHttp11 = 0;
unsigned char precalcChksum = 0;
int main(int argc, char *argv[])
{
FIND_T fInfo;
FIND_RET_T fret;
char path[MAX_PATH_LEN];
char appPath[MAX_PATH_LEN];
FILE *data_file;
FILE *struct_file;
int filesProcessed;
int i;
char targetfile[MAX_PATH_LEN];
strcpy(targetfile, "fsdata.c");
memset(path, 0, sizeof(path));
memset(appPath, 0, sizeof(appPath));
printf(NEWLINE " makefsdata - HTML to C source converter" NEWLINE);
printf(" by Jim Pettinato - circa 2003 " NEWLINE);
printf(" extended by Simon Goldschmidt - 2009 " NEWLINE NEWLINE);
strcpy(path, "fs");
for(i = 1; i < argc; i++) {
if (argv[i][0] == '-') {
if (strstr(argv[i], "-s")) {
processSubs = 0;
} else if (strstr(argv[i], "-e")) {
includeHttpHeader = 0;
} else if (strstr(argv[i], "-11")) {
useHttp11 = 1;
} else if (strstr(argv[i], "-c")) {
precalcChksum = 1;
} else if((argv[i][1] == 'f') && (argv[i][2] == ':')) {
strcpy(targetfile, &argv[i][3]);
printf("Writing to file \"%s\"\n", targetfile);
}
} else {
strcpy(path, argv[i]);
}
}
/* if command line param or subdir named 'fs' not found spout usage verbiage */
fret = FINDFIRST_DIR(path, &fInfo);
if (!FINDFIRST_SUCCEEDED(fret)) {
/* if no subdir named 'fs' (or the one which was given) exists, spout usage verbiage */
printf(" Failed to open directory \"%s\"." NEWLINE NEWLINE, path);
printf(" Usage: htmlgen [targetdir] [-s] [-i] [-f:<filename>]" NEWLINE NEWLINE);
printf(" targetdir: relative or absolute path to files to convert" NEWLINE);
printf(" switch -s: toggle processing of subdirectories (default is on)" NEWLINE);
printf(" switch -e: exclude HTTP header from file (header is created at runtime, default is off)" NEWLINE);
printf(" switch -11: include HTTP 1.1 header (1.0 is default)" NEWLINE);
printf(" switch -c: precalculate checksums for all pages (default is off)" NEWLINE);
printf(" switch -f: target filename (default is \"fsdata.c\")" NEWLINE);
printf(" if targetdir not specified, htmlgen will attempt to" NEWLINE);
printf(" process files in subdirectory 'fs'" NEWLINE);
exit(-1);
}
printf("HTTP %sheader will %s statically included." NEWLINE,
(includeHttpHeader ? (useHttp11 ? "1.1 " : "1.0 ") : ""),
(includeHttpHeader ? "be" : "not be"));
sprintf(curSubdir, ""); /* start off in web page's root directory - relative paths */
printf(" Processing all files in directory %s", path);
if (processSubs) {
printf(" and subdirectories..." NEWLINE NEWLINE);
} else {
printf("..." NEWLINE NEWLINE);
}
GETCWD(appPath, MAX_PATH_LEN);
data_file = fopen("fsdata.tmp", "wb");
if (data_file == NULL) {
printf("Failed to create file \"fsdata.tmp\"\n");
exit(-1);
}
struct_file = fopen("fshdr.tmp", "wb");
if (struct_file == NULL) {
printf("Failed to create file \"fshdr.tmp\"\n");
exit(-1);
}
CHDIR(path);
fprintf(data_file, "#include \"fs.h\"" NEWLINE);
fprintf(data_file, "#include \"lwip/def.h\"" NEWLINE);
fprintf(data_file, "#include \"fsdata.h\"" NEWLINE NEWLINE NEWLINE);
fprintf(data_file, "#define file_NULL (struct fsdata_file *) NULL" NEWLINE NEWLINE NEWLINE);
sprintf(lastFileVar, "NULL");
filesProcessed = process_sub(data_file, struct_file);
/* data_file now contains all of the raw data.. now append linked list of
* file header structs to allow embedded app to search for a file name */
fprintf(data_file, NEWLINE NEWLINE);
fprintf(struct_file, "#define FS_ROOT file_%s" NEWLINE, lastFileVar);
fprintf(struct_file, "#define FS_NUMFILES %d" NEWLINE NEWLINE, filesProcessed);
fclose(data_file);
fclose(struct_file);
CHDIR(appPath);
/* append struct_file to data_file */
printf(NEWLINE "Creating target file..." NEWLINE NEWLINE);
concat_files("fsdata.tmp", "fshdr.tmp", targetfile);
/* if succeeded, delete the temporary files */
remove("fsdata.tmp");
remove("fshdr.tmp");
printf(NEWLINE "Processed %d files - done." NEWLINE NEWLINE, filesProcessed);
return 0;
}
static void copy_file(const char *filename_in, FILE *fout)
{
FILE *fin;
size_t len;
fin = fopen(filename_in, "rb");
if (fin == NULL) {
printf("Failed to open file \"%s\"\n", filename_in);
exit(-1);
}
while((len = fread(file_buffer_raw, 1, COPY_BUFSIZE, fin)) > 0)
{
fwrite(file_buffer_raw, 1, len, fout);
}
fclose(fin);
}
void concat_files(const char *file1, const char *file2, const char *targetfile)
{
FILE *fout;
fout = fopen(targetfile, "wb");
if (fout == NULL) {
printf("Failed to open file \"%s\"\n", targetfile);
exit(-1);
}
copy_file(file1, fout);
copy_file(file2, fout);
fclose(fout);
}
int process_sub(FILE *data_file, FILE *struct_file)
{
FIND_T fInfo;
FIND_RET_T fret;
int filesProcessed = 0;
char oldSubdir[MAX_PATH_LEN];
if (processSubs) {
/* process subs recursively */
strcpy(oldSubdir, curSubdir);
fret = FINDFIRST_DIR("*", &fInfo);
if (FINDFIRST_SUCCEEDED(fret)) {
do {
const char *curName = FIND_T_FILENAME(fInfo);
if (curName == NULL) continue;
if (curName[0] == '.') continue;
if (strcmp(curName, "CVS") == 0) continue;
if (!FIND_T_IS_DIR(fInfo)) continue;
CHDIR(curName);
strcat(curSubdir, "/");
strcat(curSubdir, curName);
printf(NEWLINE "processing subdirectory %s/..." NEWLINE, curSubdir);
filesProcessed += process_sub(data_file, struct_file);
CHDIR("..");
strcpy(curSubdir, oldSubdir);
} while (FINDNEXT_SUCCEEDED(FINDNEXT(fret, &fInfo)));
}
}
fret = FINDFIRST_FILE("*.*", &fInfo);
if (FINDFIRST_SUCCEEDED(fret)) {
/* at least one file in directory */
do {
if (FIND_T_IS_FILE(fInfo)) {
const char *curName = FIND_T_FILENAME(fInfo);
printf("processing %s/%s..." NEWLINE, curSubdir, curName);
if (process_file(data_file, struct_file, curName) < 0) {
printf(NEWLINE "Error... aborting" NEWLINE);
return -1;
}
filesProcessed++;
}
} while (FINDNEXT_SUCCEEDED(FINDNEXT(fret, &fInfo)));
}
return filesProcessed;
}
int get_file_size(const char* filename)
{
FILE *inFile;
int file_size = -1;
inFile = fopen(filename, "rb");
if (inFile == NULL) {
printf("Failed to open file \"%s\"\n", filename);
exit(-1);
}
fseek(inFile, 0, SEEK_END);
file_size = ftell(inFile);
fclose(inFile);
return file_size;
}
void process_file_data(const char *filename, FILE *data_file)
{
FILE *source_file;
size_t len, written, i, src_off=0;
source_file = fopen(filename, "rb");
do {
size_t off = 0;
len = fread(file_buffer_raw, 1, COPY_BUFSIZE, source_file);
if (len > 0) {
for (i = 0; i < len; i++) {
sprintf(&file_buffer_c[off], "0x%02.2x,", file_buffer_raw[i]);
off += 5;
if ((++src_off % HEX_BYTES_PER_LINE) == 0) {
memcpy(&file_buffer_c[off], NEWLINE, NEWLINE_LEN);
off += NEWLINE_LEN;
}
}
written = fwrite(file_buffer_c, 1, off, data_file);
}
} while(len > 0);
fclose(source_file);
}
int write_checksums(FILE *struct_file, const char *filename, const char *varname,
u16_t hdr_len, u16_t hdr_chksum)
{
int chunk_size = TCP_MSS;
int offset;
size_t len;
int i = 0;
FILE *f;
#if LWIP_TCP_TIMESTAMPS
/* when timestamps are used, usable space is 12 bytes less per segment */
chunk_size -= 12;
#endif
fprintf(struct_file, "#if HTTPD_PRECALCULATED_CHECKSUM" NEWLINE);
fprintf(struct_file, "const struct fsdata_chksum chksums_%s[] = {" NEWLINE, varname);
memset(file_buffer_raw, 0xab, sizeof(file_buffer_raw));
f = fopen(filename, "rb");
if (f == INVALID_HANDLE_VALUE) {
printf("Failed to open file \"%s\"\n", filename);
exit(-1);
}
if (hdr_len > 0) {
/* add checksum for HTTP header */
fprintf(struct_file, "{%d, 0x%04x, %d}," NEWLINE, 0, hdr_chksum, hdr_len);
i++;
}
for (offset = hdr_len; ; offset += len) {
unsigned short chksum;
len = fread(file_buffer_raw, 1, chunk_size, f);
if (len == 0) {
break;
}
chksum = ~inet_chksum(file_buffer_raw, (u16_t)len);
/* add checksum for data */
fprintf(struct_file, "{%d, 0x%04x, %d}," NEWLINE, offset, chksum, len);
i++;
}
fclose(f);
fprintf(struct_file, "};" NEWLINE);
fprintf(struct_file, "#endif /* HTTPD_PRECALCULATED_CHECKSUM */" NEWLINE);
return i;
}
int process_file(FILE *data_file, FILE *struct_file, const char *filename)
{
char *pch;
char varname[MAX_PATH_LEN];
int i = 0;
char qualifiedName[MAX_PATH_LEN];
int file_size;
u16_t http_hdr_chksum = 0;
u16_t http_hdr_len = 0;
int chksum_count = 0;
/* create qualified name (TODO: prepend slash or not?) */
sprintf(qualifiedName,"%s/%s", curSubdir, filename);
/* create C variable name */
strcpy(varname, qualifiedName);
/* convert slashes & dots to underscores */
while ((pch = strpbrk(varname, "./\\")) != NULL) {
*pch = '_';
}
#if ALIGN_PAYLOAD
/* to force even alignment of array */
fprintf(data_file, "static const " PAYLOAD_ALIGN_TYPE " dummy_align_%s = %d;" NEWLINE, varname, payload_alingment_dummy_counter++);
#endif /* ALIGN_PAYLOAD */
fprintf(data_file, "static const unsigned char data_%s[] = {" NEWLINE, varname);
/* encode source file name (used by file system, not returned to browser) */
fprintf(data_file, "/* %s (%d chars) */" NEWLINE, qualifiedName, strlen(qualifiedName)+1);
file_put_ascii(data_file, qualifiedName, strlen(qualifiedName)+1, &i);
#if ALIGN_PAYLOAD
/* pad to even number of bytes to assure payload is on aligned boundary */
while(i % PAYLOAD_ALIGNMENT != 0) {
fprintf(data_file, "0x%02.2x,", 0);
i++;
}
#endif /* ALIGN_PAYLOAD */
fprintf(data_file, NEWLINE);
file_size = get_file_size(filename);
if (includeHttpHeader) {
file_write_http_header(data_file, filename, file_size, &http_hdr_len, &http_hdr_chksum);
}
if (precalcChksum) {
chksum_count = write_checksums(struct_file, filename, varname, http_hdr_len, http_hdr_chksum);
}
/* build declaration of struct fsdata_file in temp file */
fprintf(struct_file, "const struct fsdata_file file_%s[] = { {" NEWLINE, varname);
fprintf(struct_file, "file_%s," NEWLINE, lastFileVar);
fprintf(struct_file, "data_%s," NEWLINE, varname);
fprintf(struct_file, "data_%s + %d," NEWLINE, varname, i);
fprintf(struct_file, "sizeof(data_%s) - %d," NEWLINE, varname, i);
fprintf(struct_file, "%d," NEWLINE, includeHttpHeader);
if (precalcChksum) {
fprintf(struct_file, "#if HTTPD_PRECALCULATED_CHECKSUM" NEWLINE);
fprintf(struct_file, "%d, chksums_%s," NEWLINE, chksum_count, varname);
fprintf(struct_file, "#endif /* HTTPD_PRECALCULATED_CHECKSUM */" NEWLINE);
}
fprintf(struct_file, "}};" NEWLINE NEWLINE);
strcpy(lastFileVar, varname);
/* write actual file contents */
i = 0;
fprintf(data_file, NEWLINE "/* raw file data (%d bytes) */" NEWLINE, file_size);
process_file_data(filename, data_file);
fprintf(data_file, "};" NEWLINE NEWLINE);
return 0;
}
int file_write_http_header(FILE *data_file, const char *filename, int file_size,
u16_t *http_hdr_len, u16_t *http_hdr_chksum)
{
int i = 0;
int response_type = HTTP_HDR_OK;
int file_type = HTTP_HDR_DEFAULT_TYPE;
const char *cur_string;
size_t cur_len;
int written = 0;
size_t hdr_len = 0;
u16_t acc;
const char *file_ext;
int j;
memset(hdr_buf, 0, sizeof(hdr_buf));
if (useHttp11) {
response_type = HTTP_HDR_OK_11;
}
fprintf(data_file, NEWLINE "/* HTTP header */");
if (strstr(filename, "404") == filename) {
response_type = HTTP_HDR_NOT_FOUND;
if (useHttp11) {
response_type = HTTP_HDR_NOT_FOUND_11;
}
} else if (strstr(filename, "400") == filename) {
response_type = HTTP_HDR_BAD_REQUEST;
if (useHttp11) {
response_type = HTTP_HDR_BAD_REQUEST_11;
}
} else if (strstr(filename, "501") == filename) {
response_type = HTTP_HDR_NOT_IMPL;
if (useHttp11) {
response_type = HTTP_HDR_NOT_IMPL_11;
}
}
cur_string = g_psHTTPHeaderStrings[response_type];
cur_len = strlen(cur_string);
fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len);
written += file_put_ascii(data_file, cur_string, cur_len, &i);
i = 0;
if (precalcChksum) {
memcpy(&hdr_buf[hdr_len], cur_string, cur_len);
hdr_len += cur_len;
}
cur_string = serverID;
cur_len = strlen(cur_string);
fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len);
written += file_put_ascii(data_file, cur_string, cur_len, &i);
i = 0;
if (precalcChksum) {
memcpy(&hdr_buf[hdr_len], cur_string, cur_len);
hdr_len += cur_len;
}
file_ext = filename;
while(strstr(file_ext, ".") != NULL) {
file_ext = strstr(file_ext, ".");
file_ext++;
}
if((file_ext == NULL) || (*file_ext == 0)) {
printf("failed to get extension for file \"%s\", using default.\n", filename);
} else {
for(j = 0; j < NUM_HTTP_HEADERS; j++) {
if(!strcmp(file_ext, g_psHTTPHeaders[j].extension)) {
file_type = g_psHTTPHeaders[j].headerIndex;
break;
}
}
if (j >= NUM_HTTP_HEADERS) {
printf("failed to get file type for extension \"%s\", using default.\n", file_ext);
file_type = HTTP_HDR_DEFAULT_TYPE;
}
}
if (useHttp11) {
char intbuf[MAX_PATH_LEN];
memset(intbuf, 0, sizeof(intbuf));
cur_string = g_psHTTPHeaderStrings[HTTP_HDR_CONTENT_LENGTH];
cur_len = strlen(cur_string);
fprintf(data_file, NEWLINE "/* \"%s%d\r\n\" (%d+ bytes) */" NEWLINE, cur_string, file_size, cur_len+2);
written += file_put_ascii(data_file, cur_string, cur_len, &i);
if (precalcChksum) {
memcpy(&hdr_buf[hdr_len], cur_string, cur_len);
hdr_len += cur_len;
}
_itoa(file_size, intbuf, 10);
strcat(intbuf, "\r\n");
cur_len = strlen(intbuf);
written += file_put_ascii(data_file, intbuf, cur_len, &i);
i = 0;
if (precalcChksum) {
memcpy(&hdr_buf[hdr_len], intbuf, cur_len);
hdr_len += cur_len;
}
cur_string = g_psHTTPHeaderStrings[HTTP_HDR_CONN_CLOSE];
cur_len = strlen(cur_string);
fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len);
written += file_put_ascii(data_file, cur_string, cur_len, &i);
i = 0;
if (precalcChksum) {
memcpy(&hdr_buf[hdr_len], cur_string, cur_len);
hdr_len += cur_len;
}
}
cur_string = g_psHTTPHeaderStrings[file_type];
cur_len = strlen(cur_string);
fprintf(data_file, NEWLINE "/* \"%s\" (%d bytes) */" NEWLINE, cur_string, cur_len);
written += file_put_ascii(data_file, cur_string, cur_len, &i);
i = 0;
if (precalcChksum) {
memcpy(&hdr_buf[hdr_len], cur_string, cur_len);
hdr_len += cur_len;
LWIP_ASSERT("hdr_len <= 0xffff", hdr_len <= 0xffff);
LWIP_ASSERT("strlen(hdr_buf) == hdr_len", strlen(hdr_buf) == hdr_len);
acc = ~inet_chksum(hdr_buf, (u16_t)hdr_len);
*http_hdr_len = (u16_t)hdr_len;
*http_hdr_chksum = acc;
}
return written;
}
int file_put_ascii(FILE *file, const char* ascii_string, int len, int *i)
{
int x;
for(x = 0; x < len; x++) {
unsigned char cur = ascii_string[x];
fprintf(file, "0x%02.2x,", cur);
if ((++(*i) % HEX_BYTES_PER_LINE) == 0) {
fprintf(file, NEWLINE);
}
}
return len;
}
int s_put_ascii(char *buf, const char *ascii_string, int len, int *i)
{
int x;
int idx = 0;
for(x = 0; x < len; x++) {
unsigned char cur = ascii_string[x];
sprintf(&buf[idx], "0x%02.2x,", cur);
idx += 5;
if ((++(*i) % HEX_BYTES_PER_LINE) == 0) {
sprintf(&buf[idx], NEWLINE);
idx += NEWLINE_LEN;
}
}
return len;
}

View File

@ -1,161 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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.
*/
/* Standard includes. */
#include <string.h>
/* FreeRTOS includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* lwIP core includes */
#include "lwip/opt.h"
#include "lwip/tcpip.h"
/* lwIP netif includes */
#include "netif/etharp.h"
/* applications includes */
#include "apps/httpserver_raw/httpd.h"
/* The constants that define the IP address, net mask, gateway address and MAC
address are located at the bottom of FreeRTOSConfig.h. */
#define LWIP_PORT_INIT_IPADDR(addr) IP4_ADDR((addr), configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 )
#define LWIP_PORT_INIT_GW(addr) IP4_ADDR((addr), configGW_IP_ADDR0, configGW_IP_ADDR1, configGW_IP_ADDR2, configGW_IP_ADDR3 )
#define LWIP_PORT_INIT_NETMASK(addr) IP4_ADDR((addr), configNET_MASK0,configNET_MASK1,configNET_MASK2,configNET_MASK3)
#define LWIP_MAC_ADDR_BASE { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }
/* Definitions of the various SSI callback functions within the pccSSITags
array. If pccSSITags is updated, then these definitions must also be updated. */
#define ssiTASK_STATS_INDEX 0
#define ssiRUN_TIME_STATS_INDEX 1
/*
* The SSI handler callback function passed to lwIP.
*/
static unsigned short uslwIPAppsSSIHandler( int iIndex, char *pcBuffer, int iBufferLength );
/*-----------------------------------------------------------*/
/* The SSI strings that are embedded in the served html files. If this array
is changed, then the index position defined by the #defines such as
ssiTASK_STATS_INDEX above must also be updated. */
static const char *pccSSITags[] =
{
"rtos_stats",
"run_stats"
};
/*-----------------------------------------------------------*/
/* Called from the TCP/IP thread. */
void lwIPAppsInit( void *pvArgument )
{
ip_addr_t xIPAddr, xNetMask, xGateway;
extern err_t ethernetif_init( struct netif *xNetIf );
static struct netif xNetIf;
( void ) pvArgument;
/* Set up the network interface. */
ip_addr_set_zero( &xGateway );
ip_addr_set_zero( &xIPAddr );
ip_addr_set_zero( &xNetMask );
LWIP_PORT_INIT_GW(&xGateway);
LWIP_PORT_INIT_IPADDR(&xIPAddr);
LWIP_PORT_INIT_NETMASK(&xNetMask);
netif_set_default( netif_add( &xNetIf, &xIPAddr, &xNetMask, &xGateway, NULL, ethernetif_init, tcpip_input ) );
netif_set_up( &xNetIf );
/* Initialise the raw http server. */
httpd_init();
/* Install the server side include handler. */
http_set_ssi_handler( uslwIPAppsSSIHandler, pccSSITags, sizeof( pccSSITags ) / sizeof( char * ) );
}
/*-----------------------------------------------------------*/
static unsigned short uslwIPAppsSSIHandler( int iIndex, char *pcBuffer, int iBufferLength )
{
static unsigned int uiUpdateCount = 0;
static char cUpdateString[ 200 ];
extern char *pcMainGetTaskStatusMessage( void );
/* Unused parameter. */
( void ) iBufferLength;
/* The SSI handler function that generates text depending on the index of
the SSI tag encountered. */
switch( iIndex )
{
case ssiTASK_STATS_INDEX :
vTaskList( ( signed char * ) pcBuffer );
break;
case ssiRUN_TIME_STATS_INDEX :
vTaskGetRunTimeStats( ( signed char * ) pcBuffer );
break;
}
/* Include a count of the number of times an SSI function has been executed
in the returned string. */
uiUpdateCount++;
sprintf( cUpdateString, "\r\n\r\n%u\r\nStatus - %s", uiUpdateCount, pcMainGetTaskStatusMessage() );
strcat( pcBuffer, cUpdateString );
return strlen( pcBuffer );
}

View File

@ -1,15 +0,0 @@
#define LWIP_PORT_INIT_IPADDR(addr) IP4_ADDR((addr), configIP_ADDR0, configIP_ADDR1, configIP_ADDR2, configIP_ADDR3 )
#define LWIP_PORT_INIT_GW(addr) IP4_ADDR((addr), configGW_IP_ADDR0, configGW_IP_ADDR1, configGW_IP_ADDR2, configGW_IP_ADDR3 )
#define LWIP_PORT_INIT_NETMASK(addr) IP4_ADDR((addr), configNET_MASK0,configNET_MASK1,configNET_MASK2,configNET_MASK3)
/* remember to change this MAC address to suit your needs!
the last octet will be increased by netif->num for each netif */
#define LWIP_MAC_ADDR_BASE { configMAC_ADDR0, configMAC_ADDR1, configMAC_ADDR2, configMAC_ADDR3, configMAC_ADDR4, configMAC_ADDR5 }
/* configuration for applications */
#define LWIP_CHARGEN_APP 0
#define LWIP_DNS_APP 0
#define LWIP_HTTPD_APP 1

View File

@ -1,314 +0,0 @@
/*
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/
#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__
#include "xparameters.h"
/* Define platform endianness (might already be defined) */
#ifndef BYTE_ORDER
#if XPAR_MICROBLAZE_0_ENDIANNESS == 1
#define BYTE_ORDER LITTLE_ENDIAN
#else
#define BYTE_ORDER BIG_ENDIAN
#endif
#endif /* BYTE_ORDER */
/* SSI options. */
#define TCPIP_THREAD_NAME "tcpip"
#define LWIP_HTTPD_MAX_TAG_NAME_LEN 20
#define LWIP_HTTPD_MAX_TAG_INSERT_LEN 1500
#define TCPIP_THREAD_PRIO configLWIP_TASK_PRIORITY
#define TCPIP_THREAD_STACKSIZE configMINIMAL_STACK_SIZE * 3
/* MBox sizes cannot be zer, which is their default. */
#define DEFAULT_TCP_RECVMBOX_SIZE 5
#define DEFAULT_ACCEPTMBOX_SIZE 5
#define TCPIP_MBOX_SIZE 10
/* FreeRTOS is used. */
#define NO_SYS 0
/* In this example, sockets are not used, only the raw API. */
#define LWIP_SOCKET 0
/* In this example, only the raw API is used. */
#define LWIP_NETCONN 0
/* SNMP and IGMP are not required by this simple demo. ICMP is always useful
though. */
#define LWIP_SNMP 0
#define LWIP_IGMP 0
#define LWIP_ICMP 1
/* DNS is not going to be used as this is a simple local example. */
#define LWIP_DNS 0
#define LWIP_HAVE_LOOPIF 0
#define TCP_LISTEN_BACKLOG 0
#define LWIP_SO_RCVTIMEO 1
#define LWIP_SO_RCVBUF 1
#ifdef LWIP_DEBUG
#define LWIP_DBG_MIN_LEVEL 0
#define PPP_DEBUG LWIP_DBG_OFF
#define MEM_DEBUG LWIP_DBG_ON
#define MEMP_DEBUG LWIP_DBG_ON
#define PBUF_DEBUG LWIP_DBG_ON
#define API_LIB_DEBUG LWIP_DBG_OFF
#define API_MSG_DEBUG LWIP_DBG_OFF
#define TCPIP_DEBUG LWIP_DBG_OFF
#define NETIF_DEBUG LWIP_DBG_OFF
#define SOCKETS_DEBUG LWIP_DBG_OFF
#define DNS_DEBUG LWIP_DBG_OFF
#define AUTOIP_DEBUG LWIP_DBG_OFF
#define DHCP_DEBUG LWIP_DBG_OFF
#define IP_DEBUG LWIP_DBG_OFF
#define IP_REASS_DEBUG LWIP_DBG_OFF
#define ICMP_DEBUG LWIP_DBG_OFF
#define IGMP_DEBUG LWIP_DBG_OFF
#define UDP_DEBUG LWIP_DBG_OFF
#define TCP_DEBUG LWIP_DBG_OFF
#define TCP_INPUT_DEBUG LWIP_DBG_OFF
#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
#define TCP_RTO_DEBUG LWIP_DBG_OFF
#define TCP_CWND_DEBUG LWIP_DBG_OFF
#define TCP_WND_DEBUG LWIP_DBG_OFF
#define TCP_FR_DEBUG LWIP_DBG_OFF
#define TCP_QLEN_DEBUG LWIP_DBG_OFF
#define TCP_RST_DEBUG LWIP_DBG_OFF
#endif
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT)
/* ---------- Memory options ---------- */
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
byte alignment -> define MEM_ALIGNMENT to 2. */
/* MSVC port: intel processors don't need 4-byte alignment,
but are faster that way! */
#define MEM_ALIGNMENT 4
/* MEM_SIZE: the size of the heap memory. If the application will send
a lot of data that needs to be copied, this should be set high. */
#define MEM_SIZE 10240
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
sends a lot of data out of ROM (or other static memory), this
should be set high. */
#define MEMP_NUM_PBUF 10
/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
per active RAW "connection". */
#define LWIP_RAW 0
#define MEMP_NUM_RAW_PCB 0
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
per active UDP "connection". */
#define MEMP_NUM_UDP_PCB 2
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
connections. */
#define MEMP_NUM_TCP_PCB 40
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
connections. */
#define MEMP_NUM_TCP_PCB_LISTEN 2
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
#define MEMP_NUM_TCP_SEG 10
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT 15
/* The following four are used only with the sequential API and can be
set to 0 if the application only will use the raw API. */
/* MEMP_NUM_NETBUF: the number of struct netbufs. */
#define MEMP_NUM_NETBUF 0
/* MEMP_NUM_NETCONN: the number of struct netconns. */
#define MEMP_NUM_NETCONN 0
/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
for sequential API communication and incoming packets. Used in
src/api/tcpip.c. */
#define MEMP_NUM_TCPIP_MSG_API 4
#define MEMP_NUM_TCPIP_MSG_INPKT 4
#define MEMP_NUM_ARP_QUEUE 5
/* ---------- Pbuf options ---------- */
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
#define PBUF_POOL_SIZE 10
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
#define PBUF_POOL_BUFSIZE 375
/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
link level header. */
#define PBUF_LINK_HLEN 16
/** SYS_LIGHTWEIGHT_PROT
* define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection
* for certain critical regions during buffer allocation, deallocation and memory
* allocation and deallocation.
*/
#define SYS_LIGHTWEIGHT_PROT (NO_SYS==0)
/* ---------- TCP options ---------- */
#define LWIP_TCP 1
#define TCP_TTL 255
/* Controls if TCP should queue segments that arrive out of
order. Define to 0 if your device is low on memory. */
#define TCP_QUEUE_OOSEQ 1
/* TCP Maximum segment size. */
#define TCP_MSS 1460
/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF ( TCP_MSS * 2 )
/* TCP sender buffer space (pbufs). This must be at least = 2 *
TCP_SND_BUF/TCP_MSS for things to work. */
#define TCP_SND_QUEUELEN (4 * TCP_SND_BUF/TCP_MSS)
/* TCP writable space (bytes). This must be less than or equal
to TCP_SND_BUF. It is the amount of space which must be
available in the tcp snd_buf for select to return writable */
#define TCP_SNDLOWAT (TCP_SND_BUF/2)
/* TCP receive window. */
#define TCP_WND ( PBUF_POOL_SIZE * PBUF_POOL_BUFSIZE )
/* Maximum number of retransmissions of data segments. */
#define TCP_MAXRTX 12
/* Maximum number of retransmissions of SYN segments. */
#define TCP_SYNMAXRTX 4
/* ---------- ARP options ---------- */
#define LWIP_ARP 1
#define ARP_TABLE_SIZE 10
#define ARP_QUEUEING 1
/* ---------- IP options ---------- */
/* Define IP_FORWARD to 1 if you wish to have the ability to forward
IP packets across network interfaces. If you are going to run lwIP
on a device with only one network interface, define this to 0. */
#define IP_FORWARD 0
/* IP reassembly and segmentation.These are orthogonal even
* if they both deal with IP fragments */
#define IP_REASSEMBLY 0
#define IP_REASS_MAX_PBUFS 10
#define MEMP_NUM_REASSDATA 10
#define IP_FRAG 0
/* ---------- ICMP options ---------- */
#define ICMP_TTL 255
/* ---------- DHCP options ---------- */
/* Define LWIP_DHCP to 1 if you want DHCP configuration of
interfaces. */
#define LWIP_DHCP 0
/* 1 if you want to do an ARP check on the offered address
(recommended). */
#define DHCP_DOES_ARP_CHECK (LWIP_DHCP)
/* ---------- AUTOIP options ------- */
#define LWIP_AUTOIP 0
#define LWIP_DHCP_AUTOIP_COOP (LWIP_DHCP && LWIP_AUTOIP)
/* ---------- UDP options ---------- */
#define LWIP_UDP 1
#define LWIP_UDPLITE 1
#define UDP_TTL 255
/* ---------- Statistics options ---------- */
#define LWIP_STATS 1
#define LWIP_STATS_DISPLAY 0
#if LWIP_STATS
#define LINK_STATS 1
#define IP_STATS 1
#define ICMP_STATS 0
#define IGMP_STATS 0
#define IPFRAG_STATS 0
#define UDP_STATS 1
#define TCP_STATS 1
#define MEM_STATS 1
#define MEMP_STATS 1
#define PBUF_STATS 1
#define SYS_STATS 1
#endif /* LWIP_STATS */
/* ---------- PPP options ---------- */
#define PPP_SUPPORT 0 /* Set > 0 for PPP */
#if PPP_SUPPORT
#define NUM_PPP 1 /* Max PPP sessions. */
/* Select modules to enable. Ideally these would be set in the makefile but
* we're limited by the command line length so you need to modify the settings
* in this file.
*/
#define PPPOE_SUPPORT 1
#define PPPOS_SUPPORT 1
#define PAP_SUPPORT 1 /* Set > 0 for PAP. */
#define CHAP_SUPPORT 1 /* Set > 0 for CHAP. */
#define MSCHAP_SUPPORT 0 /* Set > 0 for MSCHAP (NOT FUNCTIONAL!) */
#define CBCP_SUPPORT 0 /* Set > 0 for CBCP (NOT FUNCTIONAL!) */
#define CCP_SUPPORT 0 /* Set > 0 for CCP (NOT FUNCTIONAL!) */
#define VJ_SUPPORT 1 /* Set > 0 for VJ header compression. */
#define MD5_SUPPORT 1 /* Set > 0 for MD5 (see also CHAP) */
#endif /* PPP_SUPPORT */
#endif /* __LWIPOPTS_H__ */

View File

@ -1,530 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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.
*/
/*
* main-blinky.c is included when the "Blinky" build configuration is used.
* main-full.c is included when the "Full" build configuration is used.
*
* main-blinky.c (this file) defines a very simple demo that creates two tasks,
* one queue, and one timer. It also demonstrates how MicroBlaze interrupts
* can interact with FreeRTOS tasks/timers.
*
* This simple demo project was developed and tested on the Spartan-6 SP605
* development board, using the hardware configuration found in the hardware
* project that is already included in the Eclipse project.
*
* The idle hook function:
* The idle hook function demonstrates how to query the amount of FreeRTOS heap
* space that is remaining (see vApplicationIdleHook() defined in this file).
*
* The main() Function:
* main() creates one software timer, one queue, and two tasks. It then starts
* the scheduler.
*
* The Queue Send Task:
* The queue send task is implemented by the prvQueueSendTask() function in
* this file. prvQueueSendTask() sits in a loop that causes it to repeatedly
* block for 200 milliseconds, before sending the value 100 to the queue that
* was created within main(). Once the value is sent, the task loops back
* around to block for another 200 milliseconds.
*
* The Queue Receive Task:
* The queue receive task is implemented by the prvQueueReceiveTask() function
* in this file. prvQueueReceiveTask() sits in a loop that causes it to
* repeatedly attempt to read data from the queue that was created within
* main(). When data is received, the task checks the value of the data, and
* if the value equals the expected 100, toggles an LED. The 'block time'
* parameter passed to the queue receive function specifies that the task
* should be held in the Blocked state indefinitely to wait for data to be
* available on the queue. The queue receive task will only leave the Blocked
* state when the queue send task writes to the queue. As the queue send task
* writes to the queue every 200 milliseconds, the queue receive task leaves
* the Blocked state every 200 milliseconds, and therefore toggles the LED
* every 200 milliseconds.
*
* The LED Software Timer and the Button Interrupt:
* The user buttons are configured to generate an interrupt each time one is
* pressed. The interrupt service routine switches an LED on, and resets the
* LED software timer. The LED timer has a 5000 millisecond (5 second) period,
* and uses a callback function that is defined to just turn the LED off again.
* Therefore, pressing the user button will turn the LED on, and the LED will
* remain on until a full five seconds pass without the button being pressed.
*/
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "timers.h"
/* BSP includes. */
#include "xtmrctr.h"
#include "xgpio.h"
/* Priorities at which the tasks are created. */
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* The rate at which data is sent to the queue, specified in milliseconds, and
converted to ticks using the portTICK_RATE_MS constant. */
#define mainQUEUE_SEND_FREQUENCY_MS ( 200 / portTICK_RATE_MS )
/* The number of items the queue can hold. This is 1 as the receive task
will remove items as they are added because it has the higher priority, meaning
the send task should always find the queue empty. */
#define mainQUEUE_LENGTH ( 1 )
/* The LED toggled by the queue receive task. */
#define mainTASK_CONTROLLED_LED 0x01UL
/* The LED turned on by the button interrupt, and turned off by the LED timer. */
#define mainTIMER_CONTROLLED_LED 0x02UL
/* A block time of 0 simply means, "don't block". */
#define mainDONT_BLOCK ( portTickType ) 0
/*-----------------------------------------------------------*/
/*
* Setup the NVIC, LED outputs, and button inputs.
*/
static void prvSetupHardware( void );
/*
* The tasks as described in the comments at the top of this file.
*/
static void prvQueueReceiveTask( void *pvParameters );
static void prvQueueSendTask( void *pvParameters );
/*
* The LED timer callback function. This does nothing but switch off the
* LED defined by the mainTIMER_CONTROLLED_LED constant.
*/
static void vLEDTimerCallback( xTimerHandle xTimer );
/*
* The handler executed each time a button interrupt is generated. This ensures
* the LED defined by mainTIMER_CONTROLLED_LED is on, and resets the timer so
* the timer will not turn the LED off for a full 5 seconds after the button
* interrupt occurred.
*/
static void prvButtonInputInterruptHandler( void *pvUnused );
/*-----------------------------------------------------------*/
/* The queue used by the queue send and queue receive tasks. */
static xQueueHandle xQueue = NULL;
/* The LED software timer. This uses vLEDTimerCallback() as its callback
function. */
static xTimerHandle xLEDTimer = NULL;
/* Maintains the current LED output state. */
static volatile unsigned char ucGPIOState = 0U;
/*-----------------------------------------------------------*/
/* Structures that hold the state of the various peripherals used by this demo.
These are used by the Xilinx peripheral driver API functions. */
static XTmrCtr xTimer0Instance;
static XGpio xOutputGPIOInstance, xInputGPIOInstance;
/* Constants required by the Xilinx peripheral driver API functions that are
relevant to the particular hardware set up. */
static const unsigned long ulGPIOOutputChannel = 1UL, ulGPIOInputChannel = 1UL;
/*-----------------------------------------------------------*/
int main( void )
{
/* *************************************************************************
This is a very simple project suitable for getting started with FreeRTOS.
If you would prefer a more complex project that demonstrates a lot more
features and tests, then select the 'Full' build configuration within the
SDK Eclipse IDE.
***************************************************************************/
/* Configure the interrupt controller, LED outputs and button inputs. */
prvSetupHardware();
/* Create the queue used by the queue send and queue receive tasks as
described in the comments at the top of this file. */
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( unsigned long ) );
/* Sanity check that the queue was created. */
configASSERT( xQueue );
/* Start the two tasks as described in the comments at the top of this
file. */
xTaskCreate( prvQueueReceiveTask, ( signed char * ) "Rx", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_RECEIVE_TASK_PRIORITY, NULL );
xTaskCreate( prvQueueSendTask, ( signed char * ) "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
/* Create the software timer that is responsible for turning off the LED
if the button is not pushed within 5000ms, as described at the top of
this file. The timer is not actually started until a button interrupt is
pushed, as it is not until that point that the LED is turned on. */
xLEDTimer = xTimerCreate( ( const signed char * ) "LEDTimer", /* A text name, purely to help debugging. */
( 5000 / portTICK_RATE_MS ), /* The timer period, in this case 5000ms (5s). */
pdFALSE, /* This is a one shot timer, so xAutoReload is set to pdFALSE. */
( void * ) 0, /* The ID is not used, so can be set to anything. */
vLEDTimerCallback /* The callback function that switches the LED off. */
);
/* Start the tasks and timer running. */
vTaskStartScheduler();
/* If all is well, the scheduler will now be running, and the following line
will never be reached. If the following line does execute, then there was
insufficient FreeRTOS heap memory available for the idle and/or timer tasks
to be created. See the memory management section on the FreeRTOS web site
for more details. */
for( ;; );
}
/*-----------------------------------------------------------*/
/* The callback is executed when the LED timer expires. */
static void vLEDTimerCallback( xTimerHandle xTimer )
{
/* The timer has expired - so no button pushes have occurred in the last
five seconds - turn the LED off. NOTE - accessing the LED port should use
a critical section because it is accessed from multiple tasks, and the
button interrupt - in this trivial case, for simplicity, the critical
section is omitted. */
ucGPIOState &= ~mainTIMER_CONTROLLED_LED;
XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState );
}
/*-----------------------------------------------------------*/
/* The ISR is executed when the user button is pushed. */
static void prvButtonInputInterruptHandler( void *pvUnused )
{
long lHigherPriorityTaskWoken = pdFALSE;
/* The button was pushed, so ensure the LED is on before resetting the
LED timer. The LED timer will turn the LED off if the button is not
pushed within 5000ms. */
ucGPIOState |= mainTIMER_CONTROLLED_LED;
XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState );
/* Ensure only the ISR safe reset API function is used, as this is executed
in an interrupt context. */
xTimerResetFromISR( xLEDTimer, &lHigherPriorityTaskWoken );
/* Clear the interrupt before leaving. */
XGpio_InterruptClear( &xInputGPIOInstance, ulGPIOInputChannel );
/* If calling xTimerResetFromISR() caused a task (in this case the timer
service/daemon task) to unblock, and the unblocked task has a priority
higher than or equal to the task that was interrupted, then
lHigherPriorityTaskWoken will now be set to pdTRUE, and calling
portEND_SWITCHING_ISR() will ensure the unblocked task runs next. */
portYIELD_FROM_ISR( lHigherPriorityTaskWoken );
}
/*-----------------------------------------------------------*/
static void prvQueueSendTask( void *pvParameters )
{
portTickType xNextWakeTime;
const unsigned long ulValueToSend = 100UL;
/* Initialise xNextWakeTime - this only needs to be done once. */
xNextWakeTime = xTaskGetTickCount();
for( ;; )
{
/* Place this task in the blocked state until it is time to run again.
The block time is specified in ticks, the constant used converts ticks
to ms. While in the Blocked state this task will not consume any CPU
time. */
vTaskDelayUntil( &xNextWakeTime, mainQUEUE_SEND_FREQUENCY_MS );
/* Send to the queue - causing the queue receive task to unblock and
toggle an LED. 0 is used as the block time so the sending operation
will not block - it shouldn't need to block as the queue should always
be empty at this point in the code. */
xQueueSend( xQueue, &ulValueToSend, mainDONT_BLOCK );
}
}
/*-----------------------------------------------------------*/
static void prvQueueReceiveTask( void *pvParameters )
{
unsigned long ulReceivedValue;
for( ;; )
{
/* Wait until something arrives in the queue - this task will block
indefinitely provided INCLUDE_vTaskSuspend is set to 1 in
FreeRTOSConfig.h. */
xQueueReceive( xQueue, &ulReceivedValue, portMAX_DELAY );
/* To get here something must have been received from the queue, but
is it the expected value? If it is, toggle the green LED. */
if( ulReceivedValue == 100UL )
{
/* NOTE - accessing the LED port should use a critical section
because it is accessed from multiple tasks, and the button interrupt
- in this trivial case, for simplicity, the critical section is
omitted. */
if( ( ucGPIOState & mainTASK_CONTROLLED_LED ) != 0 )
{
ucGPIOState &= ~mainTASK_CONTROLLED_LED;
}
else
{
ucGPIOState |= mainTASK_CONTROLLED_LED;
}
XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState );
}
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
portBASE_TYPE xStatus;
const unsigned char ucSetToOutput = 0U;
/* Initialize the GPIO for the LEDs. */
xStatus = XGpio_Initialize( &xOutputGPIOInstance, XPAR_LEDS_4BITS_DEVICE_ID );
if( xStatus == XST_SUCCESS )
{
/* All bits on this channel are going to be outputs (LEDs). */
XGpio_SetDataDirection( &xOutputGPIOInstance, ulGPIOOutputChannel, ucSetToOutput );
/* Start with all LEDs off. */
ucGPIOState = 0U;
XGpio_DiscreteWrite( &xOutputGPIOInstance, ulGPIOOutputChannel, ucGPIOState );
}
/* Initialise the GPIO for the button inputs. */
if( xStatus == XST_SUCCESS )
{
xStatus = XGpio_Initialize( &xInputGPIOInstance, XPAR_PUSH_BUTTONS_4BITS_DEVICE_ID );
}
if( xStatus == XST_SUCCESS )
{
/* Install the handler defined in this task for the button input.
*NOTE* The FreeRTOS defined xPortInstallInterruptHandler() API function
must be used for this purpose. */
xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR, prvButtonInputInterruptHandler, NULL );
if( xStatus == pdPASS )
{
/* Set buttons to input. */
XGpio_SetDataDirection( &xInputGPIOInstance, ulGPIOInputChannel, ~( ucSetToOutput ) );
/* Enable the button input interrupts in the interrupt controller.
*NOTE* The vPortEnableInterrupt() API function must be used for this
purpose. */
vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_PUSH_BUTTONS_4BITS_IP2INTC_IRPT_INTR );
/* Enable GPIO channel interrupts. */
XGpio_InterruptEnable( &xInputGPIOInstance, ulGPIOInputChannel );
XGpio_InterruptGlobalEnable( &xInputGPIOInstance );
}
}
configASSERT( ( xStatus == pdPASS ) );
}
/*-----------------------------------------------------------*/
void vApplicationMallocFailedHook( void )
{
/* vApplicationMallocFailedHook() will only be called if
configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
function that will get called if a call to pvPortMalloc() fails.
pvPortMalloc() is called internally by the kernel whenever a task, queue or
semaphore is created. It is also called by various parts of the demo
application. If heap_1.c or heap_2.c are used, then the size of the heap
available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in
FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used
to query the size of free heap space that remains (although it does not
provide information on how the remaining heap might be fragmented). */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
( void ) pcTaskName;
( void ) pxTask;
/* vApplicationStackOverflowHook() will only be called if
configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name
of the offending task will be passed into the hook function via its
parameters. However, when a stack has overflowed, it is possible that the
parameters will have been corrupted, in which case the pxCurrentTCB variable
can be inspected directly. */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationIdleHook( void )
{
#ifdef EXAMPLE_CODE_ONLY
The following code can only be included if heap_1.c or heap_2.c is used in
the project. By default, heap_3.c is used, so the example code is
excluded. See http://www.freertos.org/a00111.html for more information on
memory management options.
volatile size_t xFreeHeapSpace;
/* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
task. It is essential that code added to this hook function never attempts
to block in any way (for example, call xQueueReceive() with a block time
specified, or call vTaskDelay()). If the application makes use of the
vTaskDelete() API function (as this demo application does) then it is also
important that vApplicationIdleHook() is permitted to return to its calling
function, because it is the responsibility of the idle task to clean up
memory allocated by the kernel to any task that has since been deleted. */
/* This implementation of vApplicationIdleHook() simply demonstrates how
the xPortGetFreeHeapSize() function can be used. */
xFreeHeapSpace = xPortGetFreeHeapSize();
if( xFreeHeapSpace > 100 )
{
/* By now, the kernel has allocated everything it is going to, so
if there is a lot of heap remaining unallocated then
the value of configTOTAL_HEAP_SIZE in FreeRTOSConfig.h can be
reduced accordingly. */
}
#endif
}
/*-----------------------------------------------------------*/
/* This is an application defined callback function used to install the tick
interrupt handler. It is provided as an application callback because the kernel
will run on lots of different MicroBlaze and FPGA configurations - not all of
which will have the same timer peripherals defined or available. This example
uses the AXI Timer 0. If that is available on your hardware platform then this
example callback implementation should not require modification. The name of
the interrupt handler that should be installed is vPortTickISR(), which the
function below declares as an extern. */
void vApplicationSetupTimerInterrupt( void )
{
portBASE_TYPE xStatus;
const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U;
const unsigned long ulCounterValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL );
extern void vPortTickISR( void *pvUnused );
/* Initialise the timer/counter. */
xStatus = XTmrCtr_Initialize( &xTimer0Instance, XPAR_AXI_TIMER_0_DEVICE_ID );
if( xStatus == XST_SUCCESS )
{
/* Install the tick interrupt handler as the timer ISR.
*NOTE* The xPortInstallInterruptHandler() API function must be used for
this purpose. */
xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_TMRCTR_0_VEC_ID, vPortTickISR, NULL );
}
if( xStatus == pdPASS )
{
/* Enable the timer interrupt in the interrupt controller.
*NOTE* The vPortEnableInterrupt() API function must be used for this
purpose. */
vPortEnableInterrupt( XPAR_INTC_0_TMRCTR_0_VEC_ID );
/* Configure the timer interrupt handler. */
XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL );
/* Set the correct period for the timer. */
XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterValue );
/* Enable the interrupts. Auto-reload mode is used to generate a
periodic tick. Note that interrupts are disabled when this function is
called, so interrupts will not start to be processed until the first
task has started to run. */
XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) );
/* Start the timer. */
XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber );
}
/* Sanity check that the function executed as expected. */
configASSERT( ( xStatus == pdPASS ) );
}
/*-----------------------------------------------------------*/
/* This is an application defined callback function used to clear whichever
interrupt was installed by the the vApplicationSetupTimerInterrupt() callback
function - in this case the interrupt generated by the AXI timer. It is
provided as an application callback because the kernel will run on lots of
different MicroBlaze and FPGA configurations - not all of which will have the
same timer peripherals defined or available. This example uses the AXI Timer 0.
If that is available on your hardware platform then this example callback
implementation should not require modification provided the example definition
of vApplicationSetupTimerInterrupt() is also not modified. */
void vApplicationClearTimerInterrupt( void )
{
unsigned long ulCSR;
/* Clear the timer interrupt */
ulCSR = XTmrCtr_GetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0 );
XTmrCtr_SetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0, ulCSR );
}
/*-----------------------------------------------------------*/
/* These functions are not used by the Blinky build configuration. However,
they need to be defined because the Blinky and Full build configurations share
a FreeRTOSConifg.h configuration file. */
void vMainConfigureTimerForRunTimeStats( void ) {}
unsigned long ulMainGetRunTimeCounterValue( void ) { return 1; }

View File

@ -1,672 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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.
*/
/* ****************************************************************************
* main-blinky.c is included when the "Blinky" build configuration is used.
* main-full.c is included when the "Full" build configuration is used.
*
* main-full.c creates a lot of demo and test tasks and timers, and is
* therefore very comprehensive but also complex. If you would prefer a much
* simpler project to get started with, then select the 'Blinky' build
* configuration within the SDK Eclipse IDE. See the documentation page for
* this demo on the http://www.FreeRTOS.org web site for more information.
* ****************************************************************************
*
* main() creates all the demo application tasks and timers, then starts the
* scheduler. The web documentation provides more details of the standard demo
* application tasks, which provide no particular functionality, but do provide
* a good example of how to use the FreeRTOS API.
*
* In addition to the standard demo tasks, the following tasks and tests are
* defined and/or created within this file:
*
* TCP/IP ("lwIP") task - lwIP is used to create a basic web server. The web
* server uses server side includes (SSI) to generate tables of task statistics,
* and run time statistics (run time statistics show how much processing time
* each task has consumed). See
* http://www.FreeRTOS.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html
* for details on setting up and using the embedded web server.
*
* "Reg test" tasks - These test the task context switch mechanism by first
* filling the MicroBlaze registers with known values, before checking that each
* register maintains the value that was written to it as the tasks are switched
* in and out. The two register test tasks do not use the same values, and
* execute at a very low priority, to ensure they are pre-empted regularly.
*
* "Check" timer - The check timer period is initially set to five seconds.
* The check timer callback function checks that all the standard demo tasks,
* and the register check tasks, are not only still executing, but are executing
* without reporting any errors. If the check timer discovers that a task has
* either stalled, or reported an error, then it changes its own period from
* the initial five seconds, to just 200ms. The check timer callback function
* also toggles an LED each time it is called. This provides a visual
* indication of the system status: If the LED toggles every five seconds then
* no issues have been discovered. If the LED toggles every 200ms then an issue
* has been discovered with at least one task. The last reported issue is
* latched into the pcStatusMessage variable, and can also be viewed at the
* bottom of the pages served by the embedded web server.
*
* ***NOTE*** This demo uses the standard comtest tasks, which has special
* hardware requirements. See
* http://www.FreeRTOS.org/Free-RTOS-for-Xilinx-MicroBlaze-on-Spartan-6-FPGA.html
* for more information.
*
* This file also includes example implementations of the
* vApplicationIdleHook(), vApplicationStackOverflowHook(),
* vApplicationMallocFailedHook(), vApplicationClearTimerInterrupt(), and
* vApplicationSetupTimerInterrupt() callback (hook) functions.
*/
/* Standard includes. */
#include <string.h>
#include <stdio.h>
/* BSP includes. */
#include "xtmrctr.h"
#include "microblaze_exceptions_g.h"
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
/* Standard demo includes. */
#include "partest.h"
#include "flash.h"
#include "BlockQ.h"
#include "death.h"
#include "blocktim.h"
#include "semtest.h"
#include "PollQ.h"
#include "GenQTest.h"
#include "QPeek.h"
#include "recmutex.h"
#include "flop.h"
#include "dynamic.h"
#include "comtest_strings.h"
#include "TimerDemo.h"
/* lwIP includes. */
#include "lwip/tcpip.h"
/* Priorities at which the various tasks are created. */
#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCREATOR_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
#define mainFLASH_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainINTEGER_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainGEN_QUEUE_TASK_PRIORITY ( tskIDLE_PRIORITY )
#define mainFLOP_TASK_PRIORITY ( tskIDLE_PRIORITY )
/* The LED toggled by the check task. */
#define mainCHECK_LED ( 3 )
/* The rate at which mainCHECK_LED will toggle when all the tasks are running
without error. See the description of the check timer in the comments at the
top of this file. */
#define mainNO_ERROR_CHECK_TIMER_PERIOD ( 5000 / portTICK_RATE_MS )
/* The rate at which mainCHECK_LED will toggle when an error has been reported
by at least one task. See the description of the check timer in the comments at
the top of this file. */
#define mainERROR_CHECK_TIMER_PERIOD ( 200 / portTICK_RATE_MS )
/* A block time of zero simply means "don't block". */
#define mainDONT_BLOCK ( ( portTickType ) 0 )
/* The LED used by the comtest tasks. See the comtest_strings.c file for more
information. In this case an invalid LED number is provided as all four
available LEDs (LEDs 0 to 3) are already in use. */
#define mainCOM_TEST_LED ( 4 )
/* Baud rate used by the comtest tasks. The baud rate used is actually fixed in
UARTLite IP when the hardware was built, but the standard serial init function
required a baud rate parameter to be provided - in this case it is just
ignored. */
#define mainCOM_TEST_BAUD_RATE ( XPAR_RS232_UART_1_BAUDRATE )
/* The timer test task generates a lot of timers that all use a different
period that is a multiple of the mainTIMER_TEST_PERIOD definition. */
#define mainTIMER_TEST_PERIOD ( 20 )
/*-----------------------------------------------------------*/
/*
* The register test tasks as described in the comments at the top of this file.
* The nature of the register test tasks means they have to be implemented in
* assembler.
*/
extern void vRegisterTest1( void *pvParameters );
extern void vRegisterTest2( void *pvParameters );
/*
* Defines the 'check' timer functionality as described at the top of this file.
* This function is the callback function associated with the 'check' timer.
*/
static void vCheckTimerCallback( xTimerHandle xTimer );
/*
* Configure the interrupt controller, LED outputs and button inputs.
*/
static void prvSetupHardware( void );
/* Defined in lwIPApps.c. */
extern void lwIPAppsInit( void *pvArguments );
/*-----------------------------------------------------------*/
/* The check timer callback function sets pcStatusMessage to a string that
indicates the last reported error that it discovered. */
static const char *pcStatusMessage = NULL;
/* Structures that hold the state of the various peripherals used by this demo.
These are used by the Xilinx peripheral driver API functions. In this case,
only the timer/counter is used directly within this file. */
static XTmrCtr xTimer0Instance;
/* The 'check' timer, as described at the top of this file. */
static xTimerHandle xCheckTimer = NULL;
/* Used in the run time stats calculations. */
static unsigned long ulClocksPer10thOfAMilliSecond = 0UL;
/* Constants used to set up the AXI timer to generate ticks. */
static const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U;
static const unsigned long ulCounterReloadValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL );
/*-----------------------------------------------------------*/
int main( void )
{
/***************************************************************************
This project includes a lot of demo and test tasks and timers, and is
therefore comprehensive, but complex. If you would prefer a much simpler
project to get started with, then select the 'Blinky' build configuration
within the SDK Eclipse IDE.
***************************************************************************/
/* Configure the interrupt controller, LED outputs and button inputs. */
prvSetupHardware();
xil_printf( "Hello world2. %s %u\r\n", "string", 100 );
printf( "Hello world2. %s %u\r\n", "string", 100 );
/* This call creates the TCP/IP thread. */
tcpip_init( lwIPAppsInit, NULL );
/* Start the reg test tasks, as described in the comments at the top of this
file. */
xTaskCreate( vRegisterTest1, ( const signed char * const ) "RegTst1", configMINIMAL_STACK_SIZE, ( void * ) 0, tskIDLE_PRIORITY, NULL );
xTaskCreate( vRegisterTest2, ( const signed char * const ) "RegTst2", configMINIMAL_STACK_SIZE, ( void * ) 0, tskIDLE_PRIORITY, NULL );
/* Create the standard demo tasks. */
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vCreateBlockTimeTasks();
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartGenericQueueTasks( mainGEN_QUEUE_TASK_PRIORITY );
vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY );
vStartQueuePeekTasks();
vStartRecursiveMutexTasks();
// vStartComTestStringsTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartDynamicPriorityTasks();
vStartTimerDemoTask( mainTIMER_TEST_PERIOD );
/* Note - the set of standard demo tasks contains two versions of
vStartMathTasks.c. One is defined in flop.c, and uses double precision
floating point numbers and variables. The other is defined in sp_flop.c,
and uses single precision floating point numbers and variables. The
MicroBlaze floating point unit only handles single precision floating.
Therefore, to test the floating point hardware, sp_flop.c should be included
in this project. */
vStartMathTasks( mainFLOP_TASK_PRIORITY );
/* The suicide tasks must be created last as they need to know how many
tasks were running prior to their creation. This then allows them to
ascertain whether or not the correct/expected number of tasks are running at
any given time. */
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
/* Create the 'check' timer - the timer that periodically calls the
check function as described in the comments at the top of this file. Note
that, for reasons stated in the comments within vApplicationIdleHook()
(defined in this file), the check timer is not actually started until after
the scheduler has been started. */
xCheckTimer = xTimerCreate( ( const signed char * ) "Check timer", mainNO_ERROR_CHECK_TIMER_PERIOD, pdTRUE, ( void * ) 0, vCheckTimerCallback );
/* Start the scheduler running. From this point on, only tasks and
interrupts will be executing. */
vTaskStartScheduler();
/* If all is well then the following line will never be reached. If
execution does reach here, then it is highly probably that the heap size
is too small for the idle and/or timer tasks to be created within
vTaskStartScheduler(). */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
static void vCheckTimerCallback( xTimerHandle xTimer )
{
extern unsigned long ulRegTest1CycleCount, ulRegTest2CycleCount;
static volatile unsigned long ulLastRegTest1CycleCount = 0UL, ulLastRegTest2CycleCount = 0UL;
static long lErrorAlreadyLatched = pdFALSE;
portTickType xExecutionRate = mainNO_ERROR_CHECK_TIMER_PERIOD;
/* This is the callback function used by the 'check' timer, as described
in the comments at the top of this file. */
/* Don't overwrite any errors that have already been latched. */
if( pcStatusMessage == NULL )
{
/* Check the standard demo tasks are running without error. */
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: GenQueue";
}
else if( xAreQueuePeekTasksStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: QueuePeek\r\n";
}
else if( xAreBlockingQueuesStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: BlockQueue\r\n";
}
else if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: BlockTime\r\n";
}
else if( xAreSemaphoreTasksStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: SemTest\r\n";
}
else if( xArePollingQueuesStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: PollQueue\r\n";
}
else if( xIsCreateTaskStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: Death\r\n";
}
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
{
pcStatusMessage = "Error: RecMutex\r\n";
}
else if( xAreMathsTaskStillRunning() != pdPASS )
{
pcStatusMessage = "Error: Flop\r\n";
}
else if( xAreComTestTasksStillRunning() != pdPASS )
{
pcStatusMessage = "Error: Comtest\r\n";
}
else if( xAreDynamicPriorityTasksStillRunning() != pdPASS )
{
pcStatusMessage = "Error: Dynamic\r\n";
}
else if( xAreTimerDemoTasksStillRunning( xExecutionRate ) != pdTRUE )
{
pcStatusMessage = "Error: TimerDemo";
}
else if( ulRegTest1CycleCount == ulLastRegTest1CycleCount )
{
/* Check the reg test tasks are still cycling. They will stop
incrementing their loop counters if they encounter an error. */
pcStatusMessage = "Error: RegTest1\r\n";
}
else if( ulRegTest2CycleCount == ulLastRegTest2CycleCount )
{
pcStatusMessage = "Error: RegTest2\r\n";
}
}
/* Store a local copy of the current reg test loop counters. If these have
not incremented the next time this callback function is executed then the
reg test tasks have either stalled or discovered an error. */
ulLastRegTest1CycleCount = ulRegTest1CycleCount;
ulLastRegTest2CycleCount = ulRegTest2CycleCount;
/* Toggle the check LED to give an indication of the system status. If
the LED toggles every 5 seconds then everything is ok. A faster toggle
indicates an error. */
vParTestToggleLED( mainCHECK_LED );
if( pcStatusMessage != NULL )
{
if( lErrorAlreadyLatched == pdFALSE )
{
/* An error has occurred, so change the period of the timer that
calls this callback function. This results in the LED toggling at
a faster rate - giving the user visual feedback that something is not
as it should be. This function is called from the context of the
timer service task so must ***not*** attempt to block while calling
this function. */
if( xTimerChangePeriod( xTimer, mainERROR_CHECK_TIMER_PERIOD, mainDONT_BLOCK ) == pdPASS )
{
/* If the command to change the timer period was sent to the
timer command queue successfully, then latch the fact that the
timer period has already been changed. This is just done to
prevent xTimerChangePeriod() being called on every execution of
this function once an error has been discovered. */
lErrorAlreadyLatched = pdTRUE;
}
/* Update the xExecutionRate variable too as the rate at which this
callback is executed has to be passed into the
xAreTimerDemoTasksStillRunning() function. */
xExecutionRate = mainERROR_CHECK_TIMER_PERIOD;
}
}
}
/*-----------------------------------------------------------*/
/* This is an application defined callback function used to install the tick
interrupt handler. It is provided as an application callback because the kernel
will run on lots of different MicroBlaze and FPGA configurations - not all of
which will have the same timer peripherals defined or available. This example
uses the AXI Timer 0. If that is available on your hardware platform then this
example callback implementation should not require modification. The name of
the interrupt handler that should be installed is vPortTickISR(), which the
function below declares as an extern. */
void vApplicationSetupTimerInterrupt( void )
{
portBASE_TYPE xStatus;
extern void vPortTickISR( void *pvUnused );
/* Initialise the timer/counter. */
xStatus = XTmrCtr_Initialize( &xTimer0Instance, XPAR_AXI_TIMER_0_DEVICE_ID );
if( xStatus == XST_SUCCESS )
{
/* Install the tick interrupt handler as the timer ISR.
*NOTE* The xPortInstallInterruptHandler() API function must be used for
this purpose. */
xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_TMRCTR_0_VEC_ID, vPortTickISR, NULL );
}
if( xStatus == pdPASS )
{
/* Enable the timer interrupt in the interrupt controller.
*NOTE* The vPortEnableInterrupt() API function must be used for this
purpose. */
vPortEnableInterrupt( XPAR_INTC_0_TMRCTR_0_VEC_ID );
/* Configure the timer interrupt handler. */
XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vPortTickISR, NULL );
/* Set the correct period for the timer. */
XTmrCtr_SetResetValue( &xTimer0Instance, ucTimerCounterNumber, ulCounterReloadValue );
/* Enable the interrupts. Auto-reload mode is used to generate a
periodic tick. Note that interrupts are disabled when this function is
called, so interrupts will not start to be processed until the first
task has started to run. */
XTmrCtr_SetOptions( &xTimer0Instance, ucTimerCounterNumber, ( XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION ) );
/* Start the timer. */
XTmrCtr_Start( &xTimer0Instance, ucTimerCounterNumber );
}
/* Sanity check that the function executed as expected. */
configASSERT( ( xStatus == pdPASS ) );
}
/*-----------------------------------------------------------*/
/* This is an application defined callback function used to clear whichever
interrupt was installed by the the vApplicationSetupTimerInterrupt() callback
function - in this case the interrupt generated by the AXI timer. It is
provided as an application callback because the kernel will run on lots of
different MicroBlaze and FPGA configurations - not all of which will have the
same timer peripherals defined or available. This example uses the AXI Timer 0.
If that is available on your hardware platform then this example callback
implementation should not require modification provided the example definition
of vApplicationSetupTimerInterrupt() is also not modified. */
void vApplicationClearTimerInterrupt( void )
{
unsigned long ulCSR;
/* Clear the timer interrupt */
ulCSR = XTmrCtr_GetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0 );
XTmrCtr_SetControlStatusReg( XPAR_AXI_TIMER_0_BASEADDR, 0, ulCSR );
}
/*-----------------------------------------------------------*/
void vApplicationMallocFailedHook( void )
{
/* vApplicationMallocFailedHook() will only be called if
configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook
function that will get called if a call to pvPortMalloc() fails.
pvPortMalloc() is called internally by the kernel whenever a task, queue or
semaphore is created. It is also called by various parts of the demo
application. If heap_1.c or heap_2.c are used, then the size of the heap
available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in
FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used
to query the size of free heap space that remains (although it does not
provide information on how the remaining heap might be fragmented). */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
( void ) pcTaskName;
( void ) pxTask;
/* vApplicationStackOverflowHook() will only be called if
configCHECK_FOR_STACK_OVERFLOW is set to either 1 or 2. The handle and name
of the offending task will be passed into the hook function via its
parameters. However, when a stack has overflowed, it is possible that the
parameters will have been corrupted, in which case the pxCurrentTCB variable
can be inspected directly. */
taskDISABLE_INTERRUPTS();
for( ;; );
}
/*-----------------------------------------------------------*/
void vApplicationIdleHook( void )
{
static long lCheckTimerStarted = pdFALSE;
/* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
task. It is essential that code added to this hook function never attempts
to block in any way (for example, call xQueueReceive() with a block time
specified, or call vTaskDelay()). If the application makes use of the
vTaskDelete() API function (as this demo application does) then it is also
important that vApplicationIdleHook() is permitted to return to its calling
function, because it is the responsibility of the idle task to clean up
memory allocated by the kernel to any task that has since been deleted. */
/* If the check timer has not already been started, then start it now.
Normally, the xTimerStart() API function can be called immediately after the
timer is created - how this demo application includes the timer demo tasks.
The timer demo tasks, as part of their test function, deliberately fill up
the timer command queue - meaning the check timer cannot be started until
after the scheduler has been started - at which point the timer command
queue will have been drained. */
if( lCheckTimerStarted == pdFALSE )
{
xTimerStart( xCheckTimer, mainDONT_BLOCK );
lCheckTimerStarted = pdTRUE;
}
}
/*-----------------------------------------------------------*/
void vApplicationExceptionRegisterDump( xPortRegisterDump *xRegisterDump )
{
( void ) xRegisterDump;
/* If configINSTALL_EXCEPTION_HANDLERS is set to 1 in FreeRTOSConfig.h, then
the kernel will automatically install its own exception handlers before the
kernel is started, if the application writer has not already caused them to
be installed by calling either of the vPortExceptionsInstallHandlers()
or xPortInstallInterruptHandler() API functions before that time. The
kernels exception handler populates an xPortRegisterDump structure with
the processor state at the point that the exception was triggered - and also
includes a strings that say what the exception cause was and which task was
running at the time. The exception handler then passes the populated
xPortRegisterDump structure into vApplicationExceptionRegisterDump() to
allow the application writer to perform any debugging that may be necessary.
However, defining vApplicationExceptionRegisterDump() within the application
itself is optional. The kernel will use a default implementation if the
application writer chooses not to provide their own. */
for( ;; )
{
portNOP();
}
}
/*-----------------------------------------------------------*/
static void prvSetupHardware( void )
{
taskDISABLE_INTERRUPTS();
/* Configure the LED outputs. */
vParTestInitialise();
/* Tasks inherit the exception and cache configuration of the MicroBlaze
at the point that they are created. */
#if MICROBLAZE_EXCEPTIONS_ENABLED == 1
microblaze_enable_exceptions();
#endif
#if XPAR_MICROBLAZE_USE_ICACHE == 1
microblaze_invalidate_icache();
microblaze_enable_icache();
#endif
#if XPAR_MICROBLAZE_USE_DCACHE == 1
microblaze_invalidate_dcache();
microblaze_enable_dcache();
#endif
}
/*-----------------------------------------------------------*/
void vMainConfigureTimerForRunTimeStats( void )
{
/* How many times does the counter counter increment in 10ms? */
ulClocksPer10thOfAMilliSecond = XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / 10000UL;
}
/*-----------------------------------------------------------*/
unsigned long ulMainGetRunTimeCounterValue( void )
{
unsigned long ulTimerCounts1, ulTimerCounts2, ulTickCount, ulReturn;
/* NOTE: This can get called from a yield, in which case interrupts are
disabled, or from a tick ISR, in which case the effect is the same as if
interrupts were disabled. In either case, it is going to run atomically. */
/* The timer is in down count mode. How many clocks have passed since it
was last reloaded? */
ulTimerCounts1 = ulCounterReloadValue - XTmrCtr_GetValue( &xTimer0Instance, ucTimerCounterNumber );
/* How many times has it overflowed? */
ulTickCount = xTaskGetTickCountFromISR();
/* If this is being called from a yield, has the counter overflowed since
it was read? If that is the case then ulTickCounts will need incrementing
again as it will not yet have been incremented from the tick interrupt. */
ulTimerCounts2 = ulCounterReloadValue - XTmrCtr_GetValue( &xTimer0Instance, ucTimerCounterNumber );
if( ulTimerCounts2 < ulTimerCounts1 )
{
/* There is a tick interrupt pending but the tick count not yet
incremented. */
ulTickCount++;
/* Use the second timer reading. */
ulTimerCounts1 = ulTimerCounts2;
}
/* Convert the tick count into tenths of a millisecond. THIS ASSUMES
configTICK_RATE_HZ is 1000! */
ulReturn = ( ulTickCount * 10UL );
/* Add on the number of tenths of a millisecond that have passed since the
tick count last got updated. */
ulReturn += ( ulTimerCounts1 / ulClocksPer10thOfAMilliSecond );
/* Some crude rounding. */
if( ( ulTimerCounts1 % ulClocksPer10thOfAMilliSecond ) > ( ulClocksPer10thOfAMilliSecond >> 1UL ) )
{
ulReturn++;
}
return ulReturn;
}
/*-----------------------------------------------------------*/
char *pcMainGetTaskStatusMessage( void )
{
char * pcReturn;
if( pcStatusMessage == NULL )
{
pcReturn = ( char * ) "OK";
}
else
{
pcReturn = ( char * ) pcStatusMessage;
}
return pcReturn;
}

View File

@ -1,282 +0,0 @@
/*
Copyright 2001, 2002 Georges Menie (www.menie.org)
stdarg version contributed by Christian Ettinger
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
putchar is the only external dependency for this file,
if you have a working putchar, leave it commented out.
If not, uncomment the define below and
replace outbyte(c) by your own function call.
#define putchar(c) outbyte(c)
*/
#include <stdarg.h>
static void printchar(char **str, int c)
{
extern int putchar(int c);
if (str) {
**str = c;
++(*str);
}
else (void)putchar(c);
}
#define PAD_RIGHT 1
#define PAD_ZERO 2
static int prints(char **out, const char *string, int width, int pad)
{
register int pc = 0, padchar = ' ';
if (width > 0) {
register int len = 0;
register const char *ptr;
for (ptr = string; *ptr; ++ptr) ++len;
if (len >= width) width = 0;
else width -= len;
if (pad & PAD_ZERO) padchar = '0';
}
if (!(pad & PAD_RIGHT)) {
for ( ; width > 0; --width) {
printchar (out, padchar);
++pc;
}
}
for ( ; *string ; ++string) {
printchar (out, *string);
++pc;
}
for ( ; width > 0; --width) {
printchar (out, padchar);
++pc;
}
return pc;
}
/* the following should be enough for 32 bit int */
#define PRINT_BUF_LEN 12
static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase)
{
char print_buf[PRINT_BUF_LEN];
register char *s;
register int t, neg = 0, pc = 0;
register unsigned int u = i;
if (i == 0) {
print_buf[0] = '0';
print_buf[1] = '\0';
return prints (out, print_buf, width, pad);
}
if (sg && b == 10 && i < 0) {
neg = 1;
u = -i;
}
s = print_buf + PRINT_BUF_LEN-1;
*s = '\0';
while (u) {
t = u % b;
if( t >= 10 )
t += letbase - '0' - 10;
*--s = t + '0';
u /= b;
}
if (neg) {
if( width && (pad & PAD_ZERO) ) {
printchar (out, '-');
++pc;
--width;
}
else {
*--s = '-';
}
}
return pc + prints (out, s, width, pad);
}
static int print( char **out, const char *format, va_list args )
{
register int width, pad;
register int pc = 0;
char scr[2];
for (; *format != 0; ++format) {
if (*format == '%') {
++format;
width = pad = 0;
if (*format == '\0') break;
if (*format == '%') goto out;
if (*format == '-') {
++format;
pad = PAD_RIGHT;
}
while (*format == '0') {
++format;
pad |= PAD_ZERO;
}
for ( ; *format >= '0' && *format <= '9'; ++format) {
width *= 10;
width += *format - '0';
}
if( *format == 's' ) {
register char *s = (char *)va_arg( args, int );
pc += prints (out, s?s:"(null)", width, pad);
continue;
}
if( *format == 'd' ) {
pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a');
continue;
}
if( *format == 'x' ) {
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a');
continue;
}
if( *format == 'X' ) {
pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A');
continue;
}
if( *format == 'u' ) {
pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a');
continue;
}
if( *format == 'c' ) {
/* char are converted to int then pushed on the stack */
scr[0] = (char)va_arg( args, int );
scr[1] = '\0';
pc += prints (out, scr, width, pad);
continue;
}
}
else {
out:
printchar (out, *format);
++pc;
}
}
if (out) **out = '\0';
va_end( args );
return pc;
}
int printf(const char *format, ...)
{
va_list args;
va_start( args, format );
return print( 0, format, args );
}
int sprintf(char *out, const char *format, ...)
{
va_list args;
va_start( args, format );
return print( &out, format, args );
}
int snprintf( char *buf, unsigned int count, const char *format, ... )
{
va_list args;
( void ) count;
va_start( args, format );
return print( &buf, format, args );
}
#ifdef TEST_PRINTF
int main(void)
{
char *ptr = "Hello world!";
char *np = 0;
int i = 5;
unsigned int bs = sizeof(int)*8;
int mi;
char buf[80];
mi = (1 << (bs-1)) + 1;
printf("%s\n", ptr);
printf("printf test\n");
printf("%s is null pointer\n", np);
printf("%d = 5\n", i);
printf("%d = - max int\n", mi);
printf("char %c = 'a'\n", 'a');
printf("hex %x = ff\n", 0xff);
printf("hex %02x = 00\n", 0);
printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3);
printf("%d %s(s)%", 0, "message");
printf("\n");
printf("%d %s(s) with %%\n", 0, "message");
sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf);
sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf);
sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf);
sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf);
sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf);
sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf);
sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf);
sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf);
return 0;
}
/*
* if you compile this file with
* gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c
* you will get a normal warning:
* printf.c:214: warning: spurious trailing `%' in format
* this line is testing an invalid % at the end of the format string.
*
* this should display (on 32bit int machine) :
*
* Hello world!
* printf test
* (null) is null pointer
* 5 = 5
* -2147483647 = - max int
* char a = 'a'
* hex ff = ff
* hex 00 = 00
* signed -3 = unsigned 4294967293 = hex fffffffd
* 0 message(s)
* 0 message(s) with %
* justif: "left "
* justif: " right"
* 3: 0003 zero padded
* 3: 3 left justif.
* 3: 3 right justif.
* -3: -003 zero padded
* -3: -3 left justif.
* -3: -3 right justif.
*/
#endif

View File

@ -1,209 +0,0 @@
/*
FreeRTOS V7.0.2 - Copyright (C) 2011 Real Time Engineers Ltd.
***************************************************************************
* *
* FreeRTOS tutorial books are available in pdf and paperback. *
* Complete, revised, and edited pdf reference manuals are also *
* available. *
* *
* Purchasing FreeRTOS documentation will not only help you, by *
* ensuring you get running as quickly as possible and with an *
* in-depth knowledge of how to use FreeRTOS, it will also help *
* the FreeRTOS project to continue with its mission of providing *
* professional grade, cross platform, de facto standard solutions *
* for microcontrollers - completely free of charge! *
* *
* >>> See http://www.FreeRTOS.org/Documentation for details. <<< *
* *
* Thank you for using FreeRTOS, and thank you for your support! *
* *
***************************************************************************
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
>>>NOTE<<< The modification to the GPL is included to allow you to
distribute a combined work that includes FreeRTOS without being obliged to
provide the source code for proprietary components outside of the FreeRTOS
kernel. FreeRTOS 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 and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
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 a UARTLite peripheral.
*/
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "comtest_strings.h"
/* Library includes. */
#include "xuartlite.h"
#include "xuartlite_l.h"
/* Demo application includes. */
#include "serial.h"
/*-----------------------------------------------------------*/
/* Functions that are installed as the handler for interrupts that are caused by
Rx and Tx events respectively. */
static void prvRxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount );
static void prvTxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount );
/* Structure that hold the state of the UARTLite peripheral used by this demo.
This is used by the Xilinx peripheral driver API functions. */
static XUartLite xUartLiteInstance;
/* The queue used to hold received characters. */
static xQueueHandle xRxedChars;
/*-----------------------------------------------------------*/
xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
{
portBASE_TYPE xStatus;
/* The standard demo header file requires a baud rate to be passed into this
function. However, in this case the baud rate is configured when the
hardware is generated, leaving the ulWantedBaud parameter redundant. */
( void ) ulWantedBaud;
/* Create the queue used to hold Rx characters. */
xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
/* If the queue was created correctly, then setup the serial port
hardware. */
if( xRxedChars != NULL )
{
xStatus = XUartLite_Initialize( &xUartLiteInstance, XPAR_UARTLITE_1_DEVICE_ID );
if( xStatus == XST_SUCCESS )
{
/* Complete initialisation of the UART and its associated
interrupts. */
XUartLite_ResetFifos( &xUartLiteInstance );
/* Install the handlers that the standard Xilinx library interrupt
service routine will call when Rx and Tx events occur
respectively. */
XUartLite_SetRecvHandler( &xUartLiteInstance, ( XUartLite_Handler ) prvRxHandler, NULL );
XUartLite_SetSendHandler( &xUartLiteInstance, ( XUartLite_Handler ) prvTxHandler, NULL );
/* Install the standard Xilinx library interrupt handler itself.
*NOTE* The xPortInstallInterruptHandler() API function must be used
for this purpose. */
xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_UARTLITE_1_VEC_ID, ( XInterruptHandler ) XUartLite_InterruptHandler, &xUartLiteInstance );
/* Enable the interrupt in the peripheral. */
XUartLite_EnableIntr( xUartLiteInstance.RegBaseAddress );
/* Enable the interrupt in the interrupt controller.
*NOTE* The vPortEnableInterrupt() API function must be used for this
purpose. */
vPortEnableInterrupt( XPAR_INTC_0_UARTLITE_1_VEC_ID );
}
configASSERT( xStatus == pdPASS );
}
/* This demo file only supports a single port but something must be
returned to comply with the standard demo header file. */
return ( xComPortHandle ) 0;
}
/*-----------------------------------------------------------*/
portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )
{
/* The port handle is not required as this driver only supports one port. */
( void ) pxPort;
/* Get the next character from the receive queue. Return false if no
characters are available, or arrive before xBlockTime expires. */
if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
{
return pdTRUE;
}
else
{
return pdFALSE;
}
}
/*-----------------------------------------------------------*/
void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
{
( void ) pxPort;
/* Output uxStringLength bytes starting from pcString. */
XUartLite_Send( &xUartLiteInstance, ( unsigned char * ) pcString, usStringLength );
}
/*-----------------------------------------------------------*/
static void prvRxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount )
{
signed char cRxedChar;
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
( void ) pvUnused;
( void ) uxByteCount;
/* Place any received characters into the receive queue. */
while( XUartLite_IsReceiveEmpty( xUartLiteInstance.RegBaseAddress ) == pdFALSE )
{
cRxedChar = XUartLite_ReadReg( xUartLiteInstance.RegBaseAddress, XUL_RX_FIFO_OFFSET);
xQueueSendFromISR( xRxedChars, &cRxedChar, &xHigherPriorityTaskWoken );
}
/* If calling xQueueSendFromISR() caused a task to unblock, and the task
that unblocked has a priority equal to or greater than the task currently
in the Running state (the task that was interrupted), then
xHigherPriorityTaskWoken will have been set to pdTRUE internally within the
xQueueSendFromISR() API function. If xHigherPriorityTaskWoken is equal to
pdTRUE then a context switch should be requested to ensure that the
interrupt returns to the highest priority task that is able to run. */
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
/*-----------------------------------------------------------*/
static void prvTxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount )
{
( void ) pvUnused;
( void ) uxByteCount;
/* Nothing to do here. The Xilinx library function takes care of the
transmission. */
portNOP();
}

View File

@ -1 +0,0 @@
Empty application. Add your own sources.

View File

@ -1,213 +0,0 @@
/*******************************************************************/
/* */
/* This file is automatically generated by linker script generator.*/
/* */
/* Version: Xilinx EDK 13.1 EDK_O.40d */
/* */
/* Copyright (c) 2010 Xilinx, Inc. All rights reserved. */
/* */
/* Description : MicroBlaze Linker Script */
/* */
/*******************************************************************/
_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x400;
_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x10000;
/* Define Memories in the system */
MEMORY
{
microblaze_0_i_bram_ctrl_microblaze_0_d_bram_ctrl : ORIGIN = 0x00000050, LENGTH = 0x00001FB0
MCB_DDR3_S0_AXI_BASEADDR : ORIGIN = 0xC0000000, LENGTH = 0x08000000
}
/* Specify the default entry point to the program */
ENTRY(_start)
/* Define the sections, and where they are mapped in memory */
SECTIONS
{
.vectors.reset 0x00000000 : {
*(.vectors.reset)
}
.vectors.sw_exception 0x00000008 : {
*(.vectors.sw_exception)
}
.vectors.interrupt 0x00000010 : {
*(.vectors.interrupt)
}
.vectors.hw_exception 0x00000020 : {
*(.vectors.hw_exception)
}
.text : {
*(.text)
*(.text.*)
*(.gnu.linkonce.t.*)
} > MCB_DDR3_S0_AXI_BASEADDR
.init : {
KEEP (*(.init))
} > MCB_DDR3_S0_AXI_BASEADDR
.fini : {
KEEP (*(.fini))
} > MCB_DDR3_S0_AXI_BASEADDR
.rodata : {
__rodata_start = .;
*(.rodata)
*(.rodata.*)
*(.gnu.linkonce.r.*)
__rodata_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.sdata2 : {
. = ALIGN(8);
__sdata2_start = .;
*(.sdata2)
*(.sdata2.*)
*(.gnu.linkonce.s2.*)
. = ALIGN(8);
__sdata2_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.sbss2 : {
__sbss2_start = .;
*(.sbss2)
*(.sbss2.*)
*(.gnu.linkonce.sb2.*)
__sbss2_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.data : {
. = ALIGN(4);
__data_start = .;
*(.data)
*(.data.*)
*(.gnu.linkonce.d.*)
__data_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.got : {
*(.got)
} > MCB_DDR3_S0_AXI_BASEADDR
.got1 : {
*(.got1)
} > MCB_DDR3_S0_AXI_BASEADDR
.got2 : {
*(.got2)
} > MCB_DDR3_S0_AXI_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___ = .;
} > MCB_DDR3_S0_AXI_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___ = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.eh_frame : {
*(.eh_frame)
} > MCB_DDR3_S0_AXI_BASEADDR
.jcr : {
*(.jcr)
} > MCB_DDR3_S0_AXI_BASEADDR
.gcc_except_table : {
*(.gcc_except_table)
} > MCB_DDR3_S0_AXI_BASEADDR
.sdata : {
. = ALIGN(8);
__sdata_start = .;
*(.sdata)
*(.sdata.*)
*(.gnu.linkonce.s.*)
__sdata_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.sbss : {
. = ALIGN(4);
__sbss_start = .;
*(.sbss)
*(.sbss.*)
*(.gnu.linkonce.sb.*)
. = ALIGN(8);
__sbss_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.tdata : {
__tdata_start = .;
*(.tdata)
*(.tdata.*)
*(.gnu.linkonce.td.*)
__tdata_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.tbss : {
__tbss_start = .;
*(.tbss)
*(.tbss.*)
*(.gnu.linkonce.tb.*)
__tbss_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.bss : {
. = ALIGN(4);
__bss_start = .;
*(.bss)
*(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. = ALIGN(4);
__bss_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );
_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
/* Generate Stack and Heap definitions */
.heap : {
. = ALIGN(8);
_heap = .;
_heap_start = .;
. += _HEAP_SIZE;
_heap_end = .;
} > MCB_DDR3_S0_AXI_BASEADDR
.stack : {
_stack_end = .;
. += _STACK_SIZE;
. = ALIGN(8);
_stack = .;
__stack = _stack;
} > MCB_DDR3_S0_AXI_BASEADDR
_end = .;
}

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="org.eclipse.cdt.core.default.config.1232762083">
<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="org.eclipse.cdt.core.default.config.1232762083" moduleId="org.eclipse.cdt.core.settings" name="Configuration">
<externalSettings/>
<extensions/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
</cproject>

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>StandAloneBSP</name>
<comment></comment>
<projects>
<project>HardwareWithEthernetFull</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.make.core.makeBuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>org.eclipse.cdt.core.errorOutputParser</key>
<value>org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.VCErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.MakeErrorParser;</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.build.arguments</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.build.command</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.build.target.auto</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.build.target.clean</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.build.target.inc</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enabledIncrementalBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.environment</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.xilinx.sdk.sw.SwProjectNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.make.core.makeNature</nature>
</natures>
</projectDescription>

View File

@ -1,3 +0,0 @@
THIRPARTY=false
PROCESSOR=microblaze_0
MSS_FILE=system.mss

View File

@ -1,21 +0,0 @@
# Makefile generated by Xilinx SDK.
-include libgen.options
LIBRARIES = ${PROCESSOR}/lib/libxil.a
MSS = system.mss
all: libs
@echo 'Finished building libraries'
libs: $(LIBRARIES)
$(LIBRARIES): $(MSS)
libgen -hw ${HWSPEC}\
${REPOSITORIES}\
-pe ${PROCESSOR} \
-log libgen.log \
$(MSS)
clean:
rm -rf ${PROCESSOR}

View File

@ -1,20 +0,0 @@
Release 13.1 - libgen Xilinx EDK 13.1 Build EDK_O.40d
(nt)
Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
Command Line: libgen -hw ../HardwareWithEthernetFull/system.xml -lp
../../KernelAwareBSPRepository -pe microblaze_0 -log libgen.log system.mss
Staging source files.
Running DRCs.
Running generate.
Running post_generate.
Running include - 'make -s include "COMPILER=mb-gcc" "ARCHIVER=mb-ar"
"COMPILER_FLAGS=-mlittle-endian -mno-xl-soft-mul -mxl-barrel-shift
-mxl-pattern-compare -mcpu=v8.10.a -O2 -c" "EXTRA_COMPILER_FLAGS=-g"'.
Running libs - 'make -s libs "COMPILER=mb-gcc" "ARCHIVER=mb-ar"
"COMPILER_FLAGS=-mlittle-endian -mno-xl-soft-mul -mxl-barrel-shift
-mxl-pattern-compare -mcpu=v8.10.a -O2 -c" "EXTRA_COMPILER_FLAGS=-g"'.
Running execs_generate.

View File

@ -1,3 +0,0 @@
PROCESSOR=microblaze_0
REPOSITORIES=-lp ../../KernelAwareBSPRepository
HWSPEC=../HardwareWithEthernetFull/system.xml

View File

@ -1,93 +0,0 @@
PARAMETER VERSION = 2.2.0
BEGIN OS
PARAMETER OS_NAME = standalone
PARAMETER OS_VER = 3.01.a
PARAMETER PROC_INSTANCE = microblaze_0
PARAMETER STDIN = RS232_Uart_1
PARAMETER STDOUT = RS232_Uart_1
END
BEGIN PROCESSOR
PARAMETER DRIVER_NAME = cpu
PARAMETER DRIVER_VER = 1.13.a
PARAMETER HW_INSTANCE = microblaze_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = axiethernet
PARAMETER DRIVER_VER = 1.01.a
PARAMETER HW_INSTANCE = ETHERNET
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = axidma
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = ETHERNET_dma
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = LEDs_4Bits
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = Push_Buttons_4Bits
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = uartlite
PARAMETER DRIVER_VER = 2.00.a
PARAMETER HW_INSTANCE = RS232_Uart_1
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = tmrctr
PARAMETER DRIVER_VER = 2.03.a
PARAMETER HW_INSTANCE = axi_timer_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = uartlite
PARAMETER DRIVER_VER = 2.00.a
PARAMETER HW_INSTANCE = debug_module
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = microblaze_0_d_bram_ctrl
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = microblaze_0_i_bram_ctrl
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = intc
PARAMETER DRIVER_VER = 2.02.a
PARAMETER HW_INSTANCE = microblaze_0_intc
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = s6_ddrx
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = MCB_DDR3
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = DIP_Switches_4Bits
END

Some files were not shown because too many files have changed in this diff Show More