Commit a64d58e7 authored by Mike Lyons's avatar Mike Lyons

Merging xps_proj into master branch

parents 7d13bfe3 46a3a306
Net Reset LOC=N4 | IOSTANDARD=LVCMOS18;
Net SysClk LOC=L15 | IOSTANDARD=LVCMOS33;
# SPI Port
Net spi_miso LOC=U16 | IOSTANDARD=LVCMOS33;
Net spi_mosi LOC=U15 | IOSTANDARD=LVCMOS33;
Net spi_clk LOC=R10 | IOSTANDARD=LVCMOS33;
Net spi_ss LOC=M11 | IOSTANDARD=LVCMOS33;
# LEDs
Net leds<0> LOC=U18 | IOSTANDARD=LVCMOS33;
Net leds<1> LOC=M14 | IOSTANDARD=LVCMOS33;
Net leds<2> LOC=N14 | IOSTANDARD=LVCMOS33;
Net leds<3> LOC=L14 | IOSTANDARD=LVCMOS33;
Net leds<4> LOC=M13 | IOSTANDARD=LVCMOS33;
Net leds<5> LOC=D4 | IOSTANDARD=LVCMOS33;
Net leds<6> LOC=P16 | IOSTANDARD=LVCMOS33;
Net leds<7> LOC=N12 | IOSTANDARD=LVCMOS33;
Net Reset LOC=N4 | IOSTANDARD=LVCMOS18;
Net SysClk LOC=L15 | IOSTANDARD=LVCMOS33;
# SPI Port
Net spi_miso LOC=U16 | IOSTANDARD=LVCMOS33;
Net spi_mosi LOC=U15 | IOSTANDARD=LVCMOS33;
Net spi_clk LOC=R10 | IOSTANDARD=LVCMOS33;
Net spi_ss LOC=M11 | IOSTANDARD=LVCMOS33;
# LEDs
Net leds<0> LOC=U18 | IOSTANDARD=LVCMOS33;
Net leds<1> LOC=M14 | IOSTANDARD=LVCMOS33;
Net leds<2> LOC=N14 | IOSTANDARD=LVCMOS33;
Net leds<3> LOC=L14 | IOSTANDARD=LVCMOS33;
Net leds<4> LOC=M13 | IOSTANDARD=LVCMOS33;
Net leds<5> LOC=D4 | IOSTANDARD=LVCMOS33;
Net leds<6> LOC=P16 | IOSTANDARD=LVCMOS33;
Net leds<7> LOC=N12 | IOSTANDARD=LVCMOS33;
system.log
psf2Edward.log
This source diff could not be displayed because it is too large. You can view the blob instead.
// BMM LOC annotation file.
//
// Release 13.2 - Data2MEM O.61xd, build 2.2 May 20, 2011
// Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved.
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0', ID 100, memory map.
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_MAP microblaze_0 MICROBLAZE 100
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'lmb_bram_combined' 0x00000000:0x0000FFFF (64 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE lmb_bram_combined RAMB16 [0x00000000:0x0000FFFF]
BUS_BLOCK
lmb_bram/lmb_bram/ramb16bwer_0 [31:31] INPUT = lmb_bram_combined_0.mem PLACED = X3Y24;
lmb_bram/lmb_bram/ramb16bwer_1 [30:30] INPUT = lmb_bram_combined_1.mem PLACED = X2Y26;
lmb_bram/lmb_bram/ramb16bwer_2 [29:29] INPUT = lmb_bram_combined_2.mem PLACED = X3Y26;
lmb_bram/lmb_bram/ramb16bwer_3 [28:28] INPUT = lmb_bram_combined_3.mem PLACED = X3Y22;
lmb_bram/lmb_bram/ramb16bwer_4 [27:27] INPUT = lmb_bram_combined_4.mem PLACED = X3Y30;
lmb_bram/lmb_bram/ramb16bwer_5 [26:26] INPUT = lmb_bram_combined_5.mem PLACED = X2Y28;
lmb_bram/lmb_bram/ramb16bwer_6 [25:25] INPUT = lmb_bram_combined_6.mem PLACED = X2Y30;
lmb_bram/lmb_bram/ramb16bwer_7 [24:24] INPUT = lmb_bram_combined_7.mem PLACED = X3Y32;
lmb_bram/lmb_bram/ramb16bwer_8 [23:23] INPUT = lmb_bram_combined_8.mem PLACED = X1Y34;
lmb_bram/lmb_bram/ramb16bwer_9 [22:22] INPUT = lmb_bram_combined_9.mem PLACED = X2Y52;
lmb_bram/lmb_bram/ramb16bwer_10 [21:21] INPUT = lmb_bram_combined_10.mem PLACED = X2Y50;
lmb_bram/lmb_bram/ramb16bwer_11 [20:20] INPUT = lmb_bram_combined_11.mem PLACED = X2Y48;
lmb_bram/lmb_bram/ramb16bwer_12 [19:19] INPUT = lmb_bram_combined_12.mem PLACED = X2Y46;
lmb_bram/lmb_bram/ramb16bwer_13 [18:18] INPUT = lmb_bram_combined_13.mem PLACED = X2Y32;
lmb_bram/lmb_bram/ramb16bwer_14 [17:17] INPUT = lmb_bram_combined_14.mem PLACED = X1Y30;
lmb_bram/lmb_bram/ramb16bwer_15 [16:16] INPUT = lmb_bram_combined_15.mem PLACED = X1Y32;
lmb_bram/lmb_bram/ramb16bwer_16 [15:15] INPUT = lmb_bram_combined_16.mem PLACED = X2Y18;
lmb_bram/lmb_bram/ramb16bwer_17 [14:14] INPUT = lmb_bram_combined_17.mem PLACED = X2Y20;
lmb_bram/lmb_bram/ramb16bwer_18 [13:13] INPUT = lmb_bram_combined_18.mem PLACED = X2Y14;
lmb_bram/lmb_bram/ramb16bwer_19 [12:12] INPUT = lmb_bram_combined_19.mem PLACED = X2Y16;
lmb_bram/lmb_bram/ramb16bwer_20 [11:11] INPUT = lmb_bram_combined_20.mem PLACED = X2Y44;
lmb_bram/lmb_bram/ramb16bwer_21 [10:10] INPUT = lmb_bram_combined_21.mem PLACED = X2Y42;
lmb_bram/lmb_bram/ramb16bwer_22 [9:9] INPUT = lmb_bram_combined_22.mem PLACED = X2Y38;
lmb_bram/lmb_bram/ramb16bwer_23 [8:8] INPUT = lmb_bram_combined_23.mem PLACED = X2Y40;
lmb_bram/lmb_bram/ramb16bwer_24 [7:7] INPUT = lmb_bram_combined_24.mem PLACED = X2Y24;
lmb_bram/lmb_bram/ramb16bwer_25 [6:6] INPUT = lmb_bram_combined_25.mem PLACED = X1Y28;
lmb_bram/lmb_bram/ramb16bwer_26 [5:5] INPUT = lmb_bram_combined_26.mem PLACED = X2Y22;
lmb_bram/lmb_bram/ramb16bwer_27 [4:4] INPUT = lmb_bram_combined_27.mem PLACED = X3Y28;
lmb_bram/lmb_bram/ramb16bwer_28 [3:3] INPUT = lmb_bram_combined_28.mem PLACED = X3Y34;
lmb_bram/lmb_bram/ramb16bwer_29 [2:2] INPUT = lmb_bram_combined_29.mem PLACED = X3Y36;
lmb_bram/lmb_bram/ramb16bwer_30 [1:1] INPUT = lmb_bram_combined_30.mem PLACED = X2Y34;
lmb_bram/lmb_bram/ramb16bwer_31 [0:0] INPUT = lmb_bram_combined_31.mem PLACED = X2Y36;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;
<?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="xilinx.gnu.mb.exe.debug.1526382741">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.debug.1526382741" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.debug.1526382741" name="Debug" parent="xilinx.gnu.mb.exe.debug">
<folderInfo id="xilinx.gnu.mb.exe.debug.1526382741." name="/" resourcePath="">
<toolChain id="xilinx.gnu.mb.exe.debug.toolchain.1074479808" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.debug.toolchain">
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.debug.906990099" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.debug"/>
<builder buildPath="${workspace_loc:/demo/Debug}" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.debug.1685073826" managedBuildOn="true" name="GNU make.Debug" superClass="xilinx.gnu.mb.toolchain.builder.debug"/>
<tool id="xilinx.gnu.mb.c.toolchain.assembler.debug.624468394" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.debug">
<inputType id="xilinx.gnu.assembler.input.1530299928" superClass="xilinx.gnu.assembler.input"/>
</tool>
<tool id="xilinx.gnu.mb.c.toolchain.compiler.debug.1446040926" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.debug">
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1648238693" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.option.debugging.level.1876690668" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.84912715" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.16117485" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.2025998320" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.mul.759631855" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.8831996" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/include"/>
</option>
<inputType id="xilinx.gnu.compiler.input.347712346" name="C source files" superClass="xilinx.gnu.compiler.input"/>
</tool>
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.debug.223617447" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.debug">
<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.578910897" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.option.debugging.level.99595763" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1274918196" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.1240039185" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1786658605" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.mul.1923590513" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.807993403" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/include"/>
</option>
<inputType id="xilinx.gnu.mb.cxx.compiler.input.648873885" name="C++ source files" superClass="xilinx.gnu.mb.cxx.compiler.input"/>
</tool>
<tool id="xilinx.gnu.mb.toolchain.archiver.1539701538" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
<tool id="xilinx.gnu.mb.c.toolchain.linker.debug.1975833337" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.debug">
<option id="xilinx.gnu.mb.linker.inferred.mbversion.585742571" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1978418661" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1889097504" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.mul.1038478631" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1046693538" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/lib"/>
</option>
<inputType id="xilinx.gnu.linker.input.59786092" superClass="xilinx.gnu.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
<inputType id="xilinx.gnu.linker.input.lscript.43540719" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
</tool>
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.debug.611571600" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.debug">
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1869960589" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1789857639" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.683225781" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.mul.1665375810" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.648441665" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/lib"/>
</option>
<inputType id="xilinx.gnu.linker.input.308356398" superClass="xilinx.gnu.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
<inputType id="xilinx.gnu.linker.input.lscript.1441488960" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
</tool>
<tool id="xilinx.gnu.mb.size.debug.1239296801" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.debug"/>
<tool id="xilinx.elfcheck.mb.debug.115730388" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.debug">
<option id="xilinx.elfcheck.option.hwspec.895486694" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../xps_hw_platform/system.xml" valueType="string"/>
<option id="xilinx.elfcheck.option.procname.982218031" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_0" valueType="string"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.1874379234;xilinx.gnu.mb.exe.release.1874379234.">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1526382741;xilinx.gnu.mb.exe.debug.1526382741.">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1526382741;xilinx.gnu.mb.exe.debug.1526382741.;xilinx.gnu.mb.c.toolchain.compiler.debug.1446040926;xilinx.gnu.compiler.input.347712346">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.1874379234;xilinx.gnu.mb.exe.release.1874379234.;xilinx.gnu.mb.c.toolchain.compiler.release.1098713828;xilinx.gnu.compiler.input.794413244">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
<cconfiguration id="xilinx.gnu.mb.exe.release.1874379234">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="xilinx.gnu.mb.exe.release.1874379234" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="com.xilinx.sdk.managedbuilder.XELF.mb" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="xilinx.gnu.mb.exe.release.1874379234" name="Release" parent="xilinx.gnu.mb.exe.release">
<folderInfo id="xilinx.gnu.mb.exe.release.1874379234." name="/" resourcePath="">
<toolChain id="xilinx.gnu.mb.exe.release.toolchain.1088990964" name="Xilinx MicroBlaze GNU Toolchain" superClass="xilinx.gnu.mb.exe.release.toolchain">
<targetPlatform binaryParser="com.xilinx.sdk.managedbuilder.XELF.mb" id="xilinx.mb.target.gnu.base.release.1966593366" isAbstract="false" name="Debug Platform" superClass="xilinx.mb.target.gnu.base.release"/>
<builder buildPath="${workspace_loc:/demo/Release}" enableAutoBuild="true" id="xilinx.gnu.mb.toolchain.builder.release.1671868434" managedBuildOn="true" name="GNU make.Release" superClass="xilinx.gnu.mb.toolchain.builder.release"/>
<tool id="xilinx.gnu.mb.c.toolchain.assembler.release.876197432" name="MicroBlaze gcc assembler" superClass="xilinx.gnu.mb.c.toolchain.assembler.release">
<inputType id="xilinx.gnu.assembler.input.61453886" superClass="xilinx.gnu.assembler.input"/>
</tool>
<tool id="xilinx.gnu.mb.c.toolchain.compiler.release.1098713828" name="MicroBlaze gcc compiler" superClass="xilinx.gnu.mb.c.toolchain.compiler.release">
<option defaultValue="gnu.c.optimization.level.most" id="xilinx.gnu.compiler.option.optimization.level.107200402" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.option.debugging.level.1267246131" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.1049510927" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.625077040" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.2117022726" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.mul.1935521183" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.866562977" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/include"/>
</option>
<inputType id="xilinx.gnu.compiler.input.794413244" name="C source files" superClass="xilinx.gnu.compiler.input"/>
</tool>
<tool id="xilinx.gnu.mb.cxx.toolchain.compiler.release.296140512" name="MicroBlaze g++ compiler" superClass="xilinx.gnu.mb.cxx.toolchain.compiler.release">
<option defaultValue="gnu.c.optimization.level.most" id="xilinx.gnu.compiler.option.optimization.level.956845511" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.option.debugging.level.1506855479" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
<option id="xilinx.gnu.mb.compiler.inferred.mbversion.563993308" superClass="xilinx.gnu.mb.compiler.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.compiler.inferred.usebarrel.895799589" superClass="xilinx.gnu.mb.compiler.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.usepcmp.1558683552" superClass="xilinx.gnu.mb.compiler.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.compiler.inferred.mul.13660006" superClass="xilinx.gnu.mb.compiler.inferred.mul" value="xilinx.gnu.mb.compiler.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.compiler.inferred.swplatform.includes.1802910256" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/include"/>
</option>
<inputType id="xilinx.gnu.mb.cxx.compiler.input.2035748458" name="C++ source files" superClass="xilinx.gnu.mb.cxx.compiler.input"/>
</tool>
<tool id="xilinx.gnu.mb.toolchain.archiver.984670705" name="MicroBlaze archiver" superClass="xilinx.gnu.mb.toolchain.archiver"/>
<tool id="xilinx.gnu.mb.c.toolchain.linker.release.803791852" name="MicroBlaze gcc linker" superClass="xilinx.gnu.mb.c.toolchain.linker.release">
<option id="xilinx.gnu.mb.linker.inferred.mbversion.331547598" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.1920314155" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.2060796612" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.mul.1077867032" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1203525340" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/lib"/>
</option>
<inputType id="xilinx.gnu.linker.input.1104704384" superClass="xilinx.gnu.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
<inputType id="xilinx.gnu.linker.input.lscript.90037318" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
</tool>
<tool id="xilinx.gnu.mb.cxx.toolchain.linker.release.1226275661" name="MicroBlaze g++ linker" superClass="xilinx.gnu.mb.cxx.toolchain.linker.release">
<option id="xilinx.gnu.mb.linker.inferred.mbversion.1040271772" superClass="xilinx.gnu.mb.linker.inferred.mbversion" value="8.20.a" valueType="string"/>
<option id="xilinx.gnu.mb.linker.inferred.usebarrel.546712013" superClass="xilinx.gnu.mb.linker.inferred.usebarrel" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.usepcmp.1468747866" superClass="xilinx.gnu.mb.linker.inferred.usepcmp" value="true" valueType="boolean"/>
<option id="xilinx.gnu.mb.linker.inferred.mul.1150761071" superClass="xilinx.gnu.mb.linker.inferred.mul" value="xilinx.gnu.mb.linker.inferred.mul.32bit" valueType="enumerated"/>
<option id="xilinx.gnu.linker.inferred.swplatform.lpath.1133642997" superClass="xilinx.gnu.linker.inferred.swplatform.lpath" valueType="libPaths">
<listOptionValue builtIn="false" value="../../standalone_bsp_0/microblaze_0/lib"/>
</option>
<inputType id="xilinx.gnu.linker.input.300985381" superClass="xilinx.gnu.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
<inputType id="xilinx.gnu.linker.input.lscript.1226938639" name="Linker Script" superClass="xilinx.gnu.linker.input.lscript"/>
</tool>
<tool id="xilinx.gnu.mb.size.release.1576429260" name="MicroBlaze Print Size" superClass="xilinx.gnu.mb.size.release"/>
<tool id="xilinx.elfcheck.mb.release.1183454830" name="Xilinx ELF Check" superClass="xilinx.elfcheck.mb.release">
<option id="xilinx.elfcheck.option.hwspec.1239123640" superClass="xilinx.elfcheck.option.hwspec" value="-hw ../../xps_hw_platform/system.xml" valueType="string"/>
<option id="xilinx.elfcheck.option.procname.678050278" superClass="xilinx.elfcheck.option.procname" value="-pe microblaze_0" valueType="string"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.1874379234;xilinx.gnu.mb.exe.release.1874379234.">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1526382741;xilinx.gnu.mb.exe.debug.1526382741.">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.debug.1526382741;xilinx.gnu.mb.exe.debug.1526382741.;xilinx.gnu.mb.c.toolchain.compiler.debug.1446040926;xilinx.gnu.compiler.input.347712346">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="xilinx.gnu.mb.exe.release.1874379234;xilinx.gnu.mb.exe.release.1874379234.;xilinx.gnu.mb.c.toolchain.compiler.release.1098713828;xilinx.gnu.compiler.input.794413244">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC"/>
<profile id="com.xilinx.managedbuilder.ui.MBGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="mb-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.PPCGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="powerpc-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-eabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="com.xilinx.managedbuilder.ui.ARMLinuxGCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="arm-xilinxa9-linux-gnueabi-gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath=""/>
<parser enabled="true"/>
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
<parser enabled="true"/>
</scannerInfoProvider>
</profile>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="demo.xilinx.gnu.mb.exe.1436571744" name="Xilinx MicroBlaze Executable" projectType="xilinx.gnu.mb.exe"/>
</storageModule>
</cproject>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>demo</name>
<comment></comment>
<projects>
<project>standalone_bsp_0</project>
<project>demobsp</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:/demo/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>
<nature>org.eclipse.cdt.core.ccnature</nature>
</natures>
</projectDescription>
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
-include ../makefile.init
RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include src/subdir.mk
-include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
endif
-include ../makefile.defs
# Add inputs and outputs from these tool invocations to the build variables
ELFSIZE += \
demo.elf.size \
ELFCHECK += \
demo.elf.elfcheck \
# All Target
all: demo.elf secondary-outputs
# Tool invocations
demo.elf: $(OBJS) $(USER_OBJS)
@echo Building target: $@
@echo Invoking: MicroBlaze g++ linker
mb-g++ -L../../standalone_bsp_0/microblaze_0/lib -mxl-barrel-shift -mxl-pattern-compare -mcpu=v8.20.a -mno-xl-soft-mul -o"demo.elf" $(OBJS) $(USER_OBJS) $(LIBS)
@echo Finished building target: $@
@echo ' '
demo.elf.size: demo.elf
@echo Invoking: MicroBlaze Print Size
mb-size demo.elf |tee "demo.elf.size"
@echo Finished building: $@
@echo ' '
demo.elf.elfcheck: demo.elf
@echo Invoking: Xilinx ELF Check
elfcheck demo.elf -hw ../../xps_hw_platform/system.xml -pe microblaze_0 |tee "demo.elf.elfcheck"
@echo Finished building: $@
@echo ' '
# Other Targets
clean:
-$(RM) $(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(ELFSIZE)$(CXX_DEPS)$(C_UPPER_DEPS)$(ELFCHECK)$(S_UPPER_DEPS) demo.elf
-@echo ' '
secondary-outputs: $(ELFSIZE) $(ELFCHECK)
.PHONY: all clean dependents
.SECONDARY:
-include ../makefile.targets
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
USER_OBJS :=
LIBS :=
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
O_SRCS :=
CPP_SRCS :=
C_UPPER_SRCS :=
C_SRCS :=
LD_SRCS :=
S_UPPER_SRCS :=
S_SRCS :=
OBJ_SRCS :=
CXX_SRCS :=
CC_SRCS :=
OBJS :=
C_DEPS :=
CC_DEPS :=
CPP_DEPS :=
EXECUTABLES :=
ELFSIZE :=
CXX_DEPS :=
C_UPPER_DEPS :=
ELFCHECK :=
S_UPPER_DEPS :=
# Every subdirectory with source files must be described here
SUBDIRS := \
src \
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
# Add inputs and outputs from these tool invocations to the build variables
CC_SRCS += \
../src/main.cc
OBJS += \
./src/main.o
CC_DEPS += \
./src/main.d
# Each subdirectory must supply rules for building sources it contributes
src/%.o: ../src/%.cc
@echo Building file: $<
@echo Invoking: MicroBlaze g++ compiler
mb-g++ -Wall -O0 -g3 -c -fmessage-length=0 -I../../standalone_bsp_0/microblaze_0/include -mxl-barrel-shift -mxl-pattern-compare -mcpu=v8.20.a -mno-xl-soft-mul -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<"
@echo Finished building: $<
@echo ' '
/*
* Empty C++ Application
*/
#include <stdio.h>
#include "xil_types.h"
#include "xparameters.h"
#include "xdmacentral.h"
#define DMA_DEVICE_ID XPAR_DMACENTRAL_0_DEVICE_ID
#define DMA_BUFFER_BYTE_SIZE 4096
static XDmaCentral Dma;
u32 * pSpiifcBase = (u32 *)0x85000000;
u32 * pMosiBase = (u32 *)0x85010000;
u32 * pMisoBase = (u32 *)0x85011000;
//
// Initializes DMA controller
//
int InitDma();
//
// Copies a block of data between two burst-mode enabled memory regions. Uses
// XPS Central DMA controller. Function spins while waiting for copy to complete.
//
int DmaCopy(void * pSrc, void * pDest, size_t byteCount);
//
// Writes to the three memmap regions in the Spiifc peripheral
// (regs, mosi/miso buffers). Verifies the writes stuck using a read.
//
void SpiifcPioTest();
//
// DMA copies from mosi to miso buffers and verifies result using PIO.
//
void SpiifcDmaTest();
//
// InitDma - Initializes DMA controller
//
int InitDma()
{
XDmaCentral_Config *pDmaCfg;
int status;
// Configure DMA controller
pDmaCfg = XDmaCentral_LookupConfig(DMA_DEVICE_ID);
if (NULL == pDmaCfg) { return XST_FAILURE; }
status = XDmaCentral_CfgInitialize(&Dma, pDmaCfg, pDmaCfg->BaseAddress);
if (XST_SUCCESS != status) { return status; }
// Reset DMAC
XDmaCentral_Reset(&Dma);
// Setup DMAC control register to increment src & dest addr
XDmaCentral_SetControl(
&Dma,
XDMC_DMACR_SOURCE_INCR_MASK | XDMC_DMACR_DEST_INCR_MASK);
// DMAC does not raise interrupts (when transfer completes)
XDmaCentral_InterruptEnableSet(&Dma, 0);
return XST_SUCCESS;
}
int DmaCopy(void * pSrc, void * pDest, size_t byteCount)
{
u32 regValue;
XDmaCentral_Transfer(&Dma, pSrc, pDest, byteCount);
do { // Wait for DMA transfer to complete
regValue = XDmaCentral_GetStatus(&Dma);
} while ((regValue & XDMC_DMASR_BUSY_MASK) == XDMC_DMASR_BUSY_MASK);
if (regValue & XDMC_DMASR_BUS_ERROR_MASK) {
xil_printf("DMA_BUS_ERROR\n");
return XST_FAILURE;
}
return XST_SUCCESS;
}
int main()
{
int status, i;
// Initialize system
if (XST_SUCCESS != (status = InitDma())) {
xil_printf("[FAIL] InitDma() failed. Exiting.\n");
return status;
}
// Perform Programmed IO tests
SpiifcPioTest();
// Test DMA
SpiifcDmaTest();
// Spiifc loopback: anything sent to spiifc is sent back
while (1) {
// //
// // Print values of all SPI registers
// //
// for (i = 0; i < 16; i++) {
// xil_printf("Reg%d=0x%08x\n", i, pSpiifcBase[i]);
// }
// Wait for M->S transfer to complete
//xil_printf("Waiting for M->S transfer to complete..\n");
while(0 == (pSpiifcBase[0] & 0x1)) { ; }
pSpiifcBase[0] &= (~0x1); // Handling MOSI transfer completion
// Initiating DMA transfer
//xil_printf("DMA MOSI buffer to MISO buffer\n");
DmaCopy(pMosiBase, pMisoBase, 4096);
// DMA done, set flag for master
//xil_printf("DMA completed\n");
pSpiifcBase[0] |= 0x2;
}
/*
int i = 0;
for (i = 0; i < 40000000; i++) { ; }
for (i = 0; i < 1024; i++) {
xil_printf("pMOSI[i] = 0x%08X\n", pMosiBase[i]);
}
*/
}
void SpiifcPioTest()
{
int i = 0;
xil_printf("Testing Spiifc PIO...\n");
// PIO Write to Spiifc memmap regions
pSpiifcBase[0] = 0x87654321;
pMosiBase[0] = 0x12345678;
pMisoBase[0] = 0xFEEDFACE;
pMisoBase[1] = 0xBEEFBABE;
pMisoBase[2] = 0xBEEFBEEF;
xil_printf("Reg0 @ 0x%08X: verifying PIO... ", pSpiifcBase);
if (0x87654321 == *pSpiifcBase) {
xil_printf("[PASS]\n");
} else {
xil_printf("[FAIL] (actual=0x%08X)\n", *pSpiifcBase);
}
xil_printf("MOSI @ 0x%08X: verifying PIO... ", pMosiBase);
if (0x12345678 == *pMosiBase) {
xil_printf("[PASS]\n");
} else {
xil_printf("[FAIL] (actual=0x%08X)\n", *pMosiBase);
}
xil_printf("MISO @ 0x%08X: verifying PIO... ", pMisoBase);
if (0xFEEDFACE == *pMisoBase) {
xil_printf("[PASS]\n");
} else {
xil_printf("[FAIL] (actual=0x%08X)\n", *pMisoBase);
}
for (i = 0; i < 16; i++) {
pSpiifcBase[i] = (i << 24) | (i << 16) | (i << 8) | i;
}
for (i = 0; i < 16; i++) {
xil_printf("Reg%d=0x%08x\n", i, pSpiifcBase[i]);
}
xil_printf("\n");
}
void SpiifcDmaTest()
{
int status;
u32 i;
// Pattern DMA memory buffer
for(i = 0; i < DMA_BUFFER_BYTE_SIZE/4; i++) {
pMosiBase[i] = ((i*4+3) & 0xFF) << 24 |
((i*4+2) & 0xFF) << 16 |
((i*4+1) & 0xFF) << 8 |
((i*4+0) & 0xFF);
//pMosiBase[i] = 0xAABBCCDD;
//xil_printf("0x%08X\n", pMosiBase[i]);
}
// DMA buffer to Spiifc.MISO buffer
if (XST_SUCCESS != (status =
DmaCopy(pMosiBase, pMisoBase, DMA_BUFFER_BYTE_SIZE))) {
xil_printf("[FAIL] DmaCopy() failed. Exiting.\n");
}
// Check DMAC copied Spiifc.MOSI --> Spiifc.MISO buffer
u32 expectedDmaWord = 0;
int failWords = 0;
for (i = 0; i < (DMA_BUFFER_BYTE_SIZE/4); i++) {
expectedDmaWord = ((i*4+3) & 0xFF) << 24 |
((i*4+2) & 0xFF) << 16 |
((i*4+1) & 0xFF) << 8 |
((i*4+0) & 0xFF) << 0;
if (pMisoBase[i] != expectedDmaWord) {
xil_printf(
"[FAIL] DMA mem word [i]: expected=0x%08X, actual=0x%08X\n",
expectedDmaWord, pMisoBase[i]);
}
}
if (0 == failWords) {
xil_printf("[PASS] DMA transfer from MOSI to MISO memory\n");
}
}
<?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.1065451617">
<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="org.eclipse.cdt.core.default.config.1065451617" moduleId="org.eclipse.cdt.core.settings" name="Configuration">
<externalSettings/>
<extensions/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
</cproject>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>standalone_bsp_0</name>
<comment></comment>
<projects>
<project>xps_hw_platform</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>
THIRPARTY=false
PROCESSOR=microblaze_0
MSS_FILE=system.mss
# 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}
Release 13.2 - libgen Xilinx EDK 13.2 Build EDK_O.61xd
(nt64)
Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
Command Line: libgen -hw ../xps_hw_platform/system.xml -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=-mno-xl-soft-mul -mxl-barrel-shift -mxl-pattern-compare
-mcpu=v8.20.a -O2 -c" "EXTRA_COMPILER_FLAGS=-g"'.
Running libs - 'make -s libs "COMPILER=mb-gcc" "ARCHIVER=mb-ar"
"COMPILER_FLAGS=-mno-xl-soft-mul -mxl-barrel-shift -mxl-pattern-compare
-mcpu=v8.20.a -O2 -c" "EXTRA_COMPILER_FLAGS=-g"'.
Running execs_generate.
PROCESSOR=microblaze_0
REPOSITORIES=
HWSPEC=../xps_hw_platform/system.xml
PARAMETER VERSION = 2.2.0
BEGIN OS
PARAMETER OS_NAME = standalone
PARAMETER OS_VER = 3.01.a
PARAMETER PROC_INSTANCE = microblaze_0
PARAMETER STDIN = mdm_0
PARAMETER STDOUT = mdm_0
END
BEGIN PROCESSOR
PARAMETER DRIVER_NAME = cpu
PARAMETER DRIVER_VER = 1.13.a
PARAMETER HW_INSTANCE = microblaze_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = DIP_Switches_8Bits
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = LEDs_8Bits
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = Push_Buttons_5Bits
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = dlmb_cntlr
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram
PARAMETER DRIVER_VER = 3.00.a
PARAMETER HW_INSTANCE = ilmb_cntlr
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = uartlite
PARAMETER DRIVER_VER = 2.00.a
PARAMETER HW_INSTANCE = mdm_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = generic
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = spiifc_0
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = dmacentral
PARAMETER DRIVER_VER = 2.00.a
PARAMETER HW_INSTANCE = xps_central_dma_0
END
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>xps_hw_platform</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
</buildSpec>
<natures>
<nature>com.xilinx.sdk.hw.HwProject</nature>
</natures>
</projectDescription>
This source diff could not be displayed because it is too large. You can view the blob instead.
// BMM LOC annotation file.
//
// Release 13.2 - Data2MEM O.61xd, build 2.2 May 20, 2011
// Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved.
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0', ID 100, memory map.
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_MAP microblaze_0 MICROBLAZE 100
///////////////////////////////////////////////////////////////////////////////
//
// Processor 'microblaze_0' address space 'lmb_bram_combined' 0x00000000:0x0000FFFF (64 KBytes).
//
///////////////////////////////////////////////////////////////////////////////
ADDRESS_SPACE lmb_bram_combined RAMB16 [0x00000000:0x0000FFFF]
BUS_BLOCK
lmb_bram/lmb_bram/ramb16bwer_0 [31:31] INPUT = lmb_bram_combined_0.mem PLACED = X3Y24;
lmb_bram/lmb_bram/ramb16bwer_1 [30:30] INPUT = lmb_bram_combined_1.mem PLACED = X2Y26;
lmb_bram/lmb_bram/ramb16bwer_2 [29:29] INPUT = lmb_bram_combined_2.mem PLACED = X3Y26;
lmb_bram/lmb_bram/ramb16bwer_3 [28:28] INPUT = lmb_bram_combined_3.mem PLACED = X3Y22;
lmb_bram/lmb_bram/ramb16bwer_4 [27:27] INPUT = lmb_bram_combined_4.mem PLACED = X3Y30;
lmb_bram/lmb_bram/ramb16bwer_5 [26:26] INPUT = lmb_bram_combined_5.mem PLACED = X2Y28;
lmb_bram/lmb_bram/ramb16bwer_6 [25:25] INPUT = lmb_bram_combined_6.mem PLACED = X2Y30;
lmb_bram/lmb_bram/ramb16bwer_7 [24:24] INPUT = lmb_bram_combined_7.mem PLACED = X3Y32;
lmb_bram/lmb_bram/ramb16bwer_8 [23:23] INPUT = lmb_bram_combined_8.mem PLACED = X1Y34;
lmb_bram/lmb_bram/ramb16bwer_9 [22:22] INPUT = lmb_bram_combined_9.mem PLACED = X2Y52;
lmb_bram/lmb_bram/ramb16bwer_10 [21:21] INPUT = lmb_bram_combined_10.mem PLACED = X2Y50;
lmb_bram/lmb_bram/ramb16bwer_11 [20:20] INPUT = lmb_bram_combined_11.mem PLACED = X2Y48;
lmb_bram/lmb_bram/ramb16bwer_12 [19:19] INPUT = lmb_bram_combined_12.mem PLACED = X2Y46;
lmb_bram/lmb_bram/ramb16bwer_13 [18:18] INPUT = lmb_bram_combined_13.mem PLACED = X2Y32;
lmb_bram/lmb_bram/ramb16bwer_14 [17:17] INPUT = lmb_bram_combined_14.mem PLACED = X1Y30;
lmb_bram/lmb_bram/ramb16bwer_15 [16:16] INPUT = lmb_bram_combined_15.mem PLACED = X1Y32;
lmb_bram/lmb_bram/ramb16bwer_16 [15:15] INPUT = lmb_bram_combined_16.mem PLACED = X2Y18;
lmb_bram/lmb_bram/ramb16bwer_17 [14:14] INPUT = lmb_bram_combined_17.mem PLACED = X2Y20;
lmb_bram/lmb_bram/ramb16bwer_18 [13:13] INPUT = lmb_bram_combined_18.mem PLACED = X2Y14;
lmb_bram/lmb_bram/ramb16bwer_19 [12:12] INPUT = lmb_bram_combined_19.mem PLACED = X2Y16;
lmb_bram/lmb_bram/ramb16bwer_20 [11:11] INPUT = lmb_bram_combined_20.mem PLACED = X2Y44;
lmb_bram/lmb_bram/ramb16bwer_21 [10:10] INPUT = lmb_bram_combined_21.mem PLACED = X2Y42;
lmb_bram/lmb_bram/ramb16bwer_22 [9:9] INPUT = lmb_bram_combined_22.mem PLACED = X2Y38;
lmb_bram/lmb_bram/ramb16bwer_23 [8:8] INPUT = lmb_bram_combined_23.mem PLACED = X2Y40;
lmb_bram/lmb_bram/ramb16bwer_24 [7:7] INPUT = lmb_bram_combined_24.mem PLACED = X2Y24;
lmb_bram/lmb_bram/ramb16bwer_25 [6:6] INPUT = lmb_bram_combined_25.mem PLACED = X1Y28;
lmb_bram/lmb_bram/ramb16bwer_26 [5:5] INPUT = lmb_bram_combined_26.mem PLACED = X2Y22;
lmb_bram/lmb_bram/ramb16bwer_27 [4:4] INPUT = lmb_bram_combined_27.mem PLACED = X3Y28;
lmb_bram/lmb_bram/ramb16bwer_28 [3:3] INPUT = lmb_bram_combined_28.mem PLACED = X3Y34;
lmb_bram/lmb_bram/ramb16bwer_29 [2:2] INPUT = lmb_bram_combined_29.mem PLACED = X3Y36;
lmb_bram/lmb_bram/ramb16bwer_30 [1:1] INPUT = lmb_bram_combined_30.mem PLACED = X2Y34;
lmb_bram/lmb_bram/ramb16bwer_31 [0:0] INPUT = lmb_bram_combined_31.mem PLACED = X2Y36;
END_BUS_BLOCK;
END_ADDRESS_SPACE;
END_ADDRESS_MAP;
<?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')) and ACCESSROUTE) ]])"/>
<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>
<?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>
<?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>
<?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_)[(not(@PROTOCOL) or (@PROTOCOL = $b_protocol_) or (@PROTOCOL = 'GENERIC'))]">
<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 (not(@PROTOCOL) or (@PROTOCOL = $b_protocol_) or (@PROTOCOL = 'GENERIC'))]">
<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>
<!DOCTYPE stylesheet [
<!ENTITY ALPUPRS "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
<!ENTITY ALPLWRS "abcdefghijklmnopqrstuvwxyz">
<!ENTITY UPR2LWS " '&ALPUPRS;' , '&ALPLWRS;' ">
<!ENTITY HEXUPPER "ABCDEFxx0123456789">
<!ENTITY HEXLOWER "abcdefxX0123456789">
<!ENTITY HEXU2L " '&HEXLOWER;' , '&HEXUPPER;' ">
<!ENTITY DIV2SLSH " 'div' , '&#047;' ">
<!ENTITY NOT_ELM_CONN "not(name() = 'PARAMETER') and not(name() = 'PORT') and not(name() = 'BUSINTERFACE')">
<!ENTITY NOT_BEF_CONN "not(name() = 'DOCUMENT') and not(name() = 'DOCUMENTATION') and not(name() = 'DESCRIPTION') and not(name() = 'LICENSEINFO')">
<!ENTITY NOT_AFT_CONN "not(name() = 'MEMORYMP') and not(name() = 'PERIPHERALS') and not(name() = 'INTERRUPTINFO')">
]>
<!-- ==============================================================
This XSL file converts BLOCK xml to SAV XTeller
============================================================== -->
<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:output method="xml"
version="1.0"
indent="yes"
encoding="UTF-8"/>
<!--
===================================================
THE MAIN TEMPLATE FOR PORT VIEW SELECTED FOCUS
===================================================
-->
<xsl:template name="WRITE_VIEW_PORT_FOCUSED">
<xsl:choose>
<xsl:when test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:call-template name="WRITE_VIEW_EXTP_TREE_SET"/>
</xsl:when>
<xsl:when test="$G_ROOT/SAV/@MODE = 'FLAT'">
<xsl:call-template name="WRITE_VIEW_EXTP_FLAT_SET"/>
</xsl:when>
</xsl:choose>
<xsl:apply-templates select="$G_SYS_MODS/MODULE" mode="_port_view_focusing_on_selected"/>
</xsl:template>
<!--
====================================================
THE MAIN TEMPLATE FOR BIF VIEW BUS FOCUS
====================================================
-->
<xsl:template name="WRITE_VIEW_BIF_FOCUS_ON_BUSES">
<xsl:if test="$G_DEBUG = 'TRUE'"><xsl:message>Focusing on busses</xsl:message></xsl:if>
<!--
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="$G_GROUPS"/>
</xsl:call-template>
-->
<xsl:apply-templates select="$G_SYS_MODS/MODULE" mode="_bif_view_focusing_on_buses"/>
<xsl:if test="$G_ROOT/SAV/@MODE = 'TREE'"> <!-- The separator -->
<xsl:element name="SET">
<xsl:attribute name="ID">MODULES WITH POTENTIAL CONNECTIONS TO FOCUSED BUS</xsl:attribute>
<xsl:attribute name="CLASS">SEPARATOR</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">Name</xsl:attribute>
<xsl:attribute name="VALUE">POTENTIAL MODULES BELOW HERE</xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">MODTYPE</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Version</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">HWVERSION</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Classification</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">IPCLASS</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE"></xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">TYPE</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Bus Standard</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">BUSSTD</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:template>
<!--
====================================================
THE MAIN TEMPLATE FOR BIF VIEW PROCESSOR FOCUS
====================================================
-->
<xsl:template name="WRITE_VIEW_BIF_FOCUS_ON_PROCS">
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="$G_GROUPS"/>
</xsl:call-template>
<xsl:if test="$G_ROOT/SAV/@MODE = 'TREE'"> <!-- The separator -->
<xsl:element name="SET">
<xsl:attribute name="ID">MODULES WITH POTENTIAL CONNECTIONS TO THIS SUBSYSTEM</xsl:attribute>
<xsl:attribute name="CLASS">SEPARATOR</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">Name</xsl:attribute>
<xsl:attribute name="VALUE">POTENTIAL MODULES BELOW HERE</xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">MODTYPE</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Version</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">HWVERSION</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Classification</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">IPCLASS</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE"></xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">TYPE</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Bus Standard</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">BUSSTD</xsl:attribute>
<xsl:attribute name="VALUE"></xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:template>
<!--
===============================================
COPY TRANSFORMS FOR FOCUSING IN BIF VIEW
===============================================
-->
<!-- Root copy template for connected -->
<xsl:template match="node() | @*" mode="_bif_view_focusing_on_connected">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="_bif_view_focusing_on_connected"/>
</xsl:copy>
</xsl:template>
<!-- Root copy template for potentials -->
<xsl:template match="node() | @*" mode="_bif_view_focusing_on_potentials">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="_bif_view_focusing_on_potentials"/>
</xsl:copy>
</xsl:template>
<xsl:template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES"> <!-- Recursive !! -->
<xsl:param name="iModules"/>
<xsl:for-each select="$iModules/BLOCK[@ID and not(BLOCK) and not(@C)]">
<xsl:variable name="m_id_" select="@ID"/>
<xsl:if test="(count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $m_id_]) &gt; 0)">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING BUS <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_module_" select="$G_SYS_MODS/MODULE[@INSTANCE = $m_id_]"/>
<xsl:apply-templates select="$m_module_" mode="_bif_view_focusing_on_connected"/>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="$iModules/BLOCK[@ID and BLOCK]">
<xsl:choose>
<!-- An actual module that needs to be written -->
<xsl:when test="not(starts-with(@ID,'__')) and BLOCK[@C] and (not(BLOCK/BLOCK) or BLOCK/BLOCK[@CP])">
<xsl:variable name="m_id_" select="@ID"/>
<xsl:variable name="m_module_" select="$G_SYS_MODS/MODULE[@INSTANCE = $m_id_]"/>
<xsl:apply-templates select="$m_module_" mode="_bif_view_focusing_on_connected"/>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_PROCESSOR__.') or starts-with(@ID,'__GROUP_MASTER__.')">
<!--
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>MASTER GROUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
-->
<xsl:variable name="master_id_">
<xsl:choose>
<xsl:when test="starts-with(@ID,'__GROUP_MASTER__.')"><xsl:value-of select="substring-after(@ID,'__GROUP_MASTER__.')"/> </xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_PROCESSOR__.')"><xsl:value-of select="substring-after(@ID,'__GROUP_PROCESSOR__.')"/> </xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="num_focused_on_" select="count($G_ROOT/SAV/MASTER[(@INSTANCE = $master_id_)])"/>
<xsl:choose>
<xsl:when test="$num_focused_on_ &gt; 0">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>CONNECTED MASTER GROUP <xsl:value-of select="$master_id_"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>POTENTIAL MASTER GROUP <xsl:value-of select="$master_id_"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_SHARED__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>SHARED GROUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="p_id_" select="substring-after(@ID,'__GROUP_SHARED__')"/>
<xsl:variable name="num_focused_on_" select="count($G_ROOT/SAV/MASTER[contains($p_id_,@INSTANCE)])"/>
<xsl:choose>
<xsl:when test="$num_focused_on_ &gt; 0">
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_MEMORY__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> MEMORY GROUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_id_" select="substring-after(@ID,'__GROUP_MEMORY__')"/>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_PERIPHERAL__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PERIPHERAL GROUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_SLAVES__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>SLAVE GROUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="(starts-with(@ID,'__GROUP_IP__') and not($G_ROOT/SAV/@VIEW = 'BUSINTERFACE'))">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>IP GROUP<xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_CONNECTED_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_FLOATING__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>FLOATING GROUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> IGNORING <xsl:value-of select="@ID"/></xsl:message></xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<!--
===============================================
TRANSFORMS FOR FOCUSED POTENTIAL MODULES
===============================================
-->
<xsl:template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES"> <!-- Recursive !! -->
<xsl:param name="iModules"/>
<!-- BUS -->
<xsl:for-each select="$iModules/BLOCK[@ID and not(BLOCK) and not(@C)]">
<xsl:variable name="m_id_" select="@ID"/>
<xsl:if test="(count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $m_id_]) &gt; 0)">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING BUS <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_module_" select="$G_SYS_MODS/MODULE[@INSTANCE = $m_id_]"/>
<xsl:apply-templates select="$m_module_" mode="_bif_view_focusing_on_connected"/>
</xsl:if>
</xsl:for-each>
<!-- GROUP -->
<xsl:for-each select="$iModules/BLOCK[@ID and BLOCK]">
<xsl:choose>
<xsl:when test="not(starts-with(@ID,'__')) and BLOCK[@C] and (not(BLOCK/BLOCK) or BLOCK/BLOCK[@CP])">
<xsl:variable name="m_id_" select="@ID"/>
<xsl:variable name="m_module_" select="$G_SYS_MODS/MODULE[@INSTANCE = $m_id_]"/>
<xsl:variable name="m_class_" select="$m_module_/@MODCLASS"/>
<xsl:choose>
<xsl:when test ="not($m_class_ = 'PROCESSOR')">
<xsl:variable name="potential_bifs_">
<xsl:for-each select="$m_module_/BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="b_std_" select="@BUSSTD"/>
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_std_]) &gt; 0"><POTENTIAL/></xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="num_potential_" select="count(exsl:node-set($potential_bifs_)/POTENTIAL)"/>
<xsl:variable name="num_connected_" select="count(exsl:node-set($potential_bifs_)/CONNECTED)"/>
<xsl:if test=" ($num_potential_ &gt; 0)">
<xsl:apply-templates select="$m_module_" mode="_bif_view_focusing_on_potentials"/>
</xsl:if>
</xsl:when>
<xsl:when test="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $m_id_)]) &gt; 0">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PERI PROCESSOR <xsl:value-of select="$m_id_"/></xsl:message></xsl:if>
<xsl:apply-templates select="$m_module_" mode="_bif_view_focusing_on_potentials"/>
</xsl:when>
</xsl:choose>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_MEMORY__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING MEMORY <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_id_" select="substring-after(@ID,'__GROUP_MEMORY__')"/>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_PERIPHERAL__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING POTENTIAL GROUP OF PERIPHERALS <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_SLAVES__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING POTENTIAL GROUP OF SLAVES <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_FOCUSED_POTENTIAL_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> IGNORING <xsl:value-of select="@ID"/></xsl:message></xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<!--
+++++++++++++++++++++++++++++++++++++++++++++++++++++
MODULE TEMPLATES
+++++++++++++++++++++++++++++++++++++++++++++++++++++
-->
<!--
===================================================
THE MODULE TEMPLATE FOR PORT VIEW SELECTED FOCUS
===================================================
-->
<xsl:template match="MODULE" mode="_port_view_focusing_on_selected">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:if test="count($G_ROOT/SAV/SELECTED[(@INSTANCE = $m_inst_)]) &gt; 0">
<xsl:choose>
<xsl:when test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:call-template name="WRITE_VIEW_PORT_TREE_SET">
<xsl:with-param name="iModRef" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$G_ROOT/SAV/@MODE = 'FLAT'">
<xsl:call-template name="WRITE_VIEW_PORT_FLAT_SET">
<xsl:with-param name="iModRef" select="self::node()"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
<!--
===================================================
THE MODULE TEMPLATE FOR BIF VIEW BUS FOCUS
===================================================
-->
<xsl:template match="MODULE" mode="_bif_view_focusing_on_buses">
<xsl:variable name="m_instance_" select="@INSTANCE"/>
<xsl:variable name="m_modclass_" select="@MODCLASS"/>
<xsl:variable name="is_focused_bus_" select="count($G_ROOT/SAV/BUS[(@INSTANCE = $m_instance_)])"/>
<xsl:variable name="bif_scope_">
<xsl:if test="$is_focused_bus_ = 0"> <!-- No need to waste time if we know its one of the focused bus -->
<xsl:for-each select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:variable name="b_bstd_" select="@BUSSTD"/>
<xsl:variable name="b_on_focused_bus_" select="count($G_ROOT/SAV/BUS[(@INSTANCE = $b_bus_)])"/>
<xsl:variable name="b_of_focused_bstd_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_bstd_])"/>
<xsl:if test="$b_on_focused_bus_ &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="$b_of_focused_bstd_ &gt; 0"><POTENTIAL/></xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:variable name="on_focused_bus_" select="count(exsl:node-set($bif_scope_)/CONNECTED)"/>
<xsl:variable name="of_focused_bstd_" select="count(exsl:node-set($bif_scope_)/POTENTIAL)"/>
<xsl:if test="(($is_focused_bus_ + $on_focused_bus_ + $of_focused_bstd_) &gt; 0)">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING MODULE ON BUS <xsl:value-of select="@INSTANCE"/></xsl:message></xsl:if>
<xsl:choose>
<!-- TREE VIEW -->
<xsl:when test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@INSTANCE"/></xsl:attribute>
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
<xsl:if test="($is_focused_bus_ &gt; 0)">
<xsl:attribute name="RGB_BG"><xsl:value-of select="$COL_FOCUSED_MASTER"/></xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="(($is_focused_bus_ + $on_focused_bus_) &gt; 0)">
<xsl:attribute name="CONNECTED_INDEX"><xsl:value-of select="@MHS_INDEX"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="POTENTIAL_INDEX"><xsl:value-of select="@MHS_INDEX"/></xsl:attribute>
</xsl:otherwise>
</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_}"/>
<xsl:for-each select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:variable name="b_bstd_" select="@BUSSTD"/>
<xsl:variable name="b_on_focused_bus_" select="count($G_ROOT/SAV/BUS[(@INSTANCE = $b_bus_)])"/>
<xsl:variable name="b_of_focused_bstd_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_bstd_])"/>
<xsl:variable name="bif_col_">
<xsl:choose>
<xsl:when test="(not($b_bus_ ='__NOC__') and ($b_on_focused_bus_ = 0) and ($b_of_focused_bstd_ &gt; 0))"><xsl:value-of select="$COL_BG_OUTOF_FOCUS_CONNECTIONS"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(($b_on_focused_bus_ + $b_of_focused_bstd_) &gt; 0)">
<xsl:if test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:call-template name="WRITE_VIEW_BIF_TREE_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
<xsl:with-param name="iBifCol" select="$bif_col_"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$G_ROOT/SAV/@MODE = 'FLAT'">
<xsl:call-template name="WRITE_VIEW_BIF_FLAT_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
<xsl:with-param name="iBifCol" select="$bif_col_"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:when>
<!-- FLAT VIEW -->
<xsl:otherwise>
<xsl:for-each select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:variable name="b_on_focused_bus_" select="count($G_ROOT/SAV/BUS[(@INSTANCE = $b_bus_)])"/>
<xsl:if test="($b_on_focused_bus_ &gt; 0)">
<xsl:if test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:call-template name="WRITE_VIEW_BIF_TREE_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$G_ROOT/SAV/@MODE = 'FLAT'">
<xsl:call-template name="WRITE_VIEW_BIF_FLAT_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<!--
===================================================
THE MODULE TEMPLATE FOR CONNECTED MODULES
IN BIF VIEW PROC FOCUS
===================================================
-->
<xsl:template match="MODULE" mode="_bif_view_focusing_on_connected">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>EXAMINING CONNECTED MODULE <xsl:value-of select="@INSTANCE"/></xsl:message></xsl:if>
<xsl:variable name="m_instance_" select="@INSTANCE"/>
<xsl:variable name="m_class_" select="@MODCLASS"/>
<xsl:variable name="bif_scope_">
<xsl:for-each select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="b_std_" select="@BUSSTD"/>
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:variable name="b_name_" select="@NAME"/>
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')"><POTENTIAL/></xsl:when>
<xsl:when test="((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR')) and (count(key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]) &gt; 0)">
<xsl:variable name="p2p_scope_">
<xsl:for-each select="$G_SYS_MODS">
<xsl:for-each select="key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]">
<xsl:variable name="b_instance_" select="../../@INSTANCE"/>
<xsl:variable name="b_modclass_" select="../../@MODCLASS"/>
<xsl:variable name="b_bifname_" select="@NAME"/>
<xsl:if test="not(($b_bifname_ = $b_name_) and ($b_instance_ = $m_instance_))">
<xsl:variable name="num_mast_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_])"/>
<xsl:variable name="num_peri_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $b_instance_)])"/>
<xsl:if test="(($num_mast_connections_ + $num_peri_connections_) &gt; 0)"><INSCOPE/></xsl:if>
<xsl:if test="(($num_mast_connections_ + $num_peri_connections_) = 0) and not($m_class_ = 'MEMORY') and not($m_class_ = 'MEMORY_CNTLR')"><UNFOCUSED/></xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="num_p2p_inscope_" select="count(exsl:node-set($p2p_scope_)/INSCOPE)"/>
<xsl:variable name="num_p2p_unfocused_" select="count(exsl:node-set($p2p_scope_)/UNFOCUSED)"/>
<xsl:if test="$num_p2p_inscope_ &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="$num_p2p_unfocused_ &gt; 0"><UNFOCUSED/></xsl:if>
</xsl:when>
<!--
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> P2P <xsl:value-of select="$b_instance_"/> == <xsl:value-of select="$num_peri_connections_"/> UNFOCUSED</xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> P2P <xsl:value-of select="$m_instance_"/>.<xsl:value-of select="$b_name_"/> = <xsl:value-of select="$num_p2p_unfocused_"/> UNFOCUSED</xsl:message></xsl:if>
-->
<xsl:when test="((@TYPE = 'SLAVE') and not(MASTERS/MASTER)) or (@TYPE = 'MASTER')">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="($b_bus_ = '__NOC__') and count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_std_]) &gt; 0"><POTENTIAL/></xsl:if>
</xsl:when>
<xsl:when test="(MASTERS/MASTER)">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><POTENTIAL/></xsl:if>
<xsl:for-each select="MASTERS/MASTER">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:choose>
<xsl:when test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:when test="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:otherwise><UNFOCUSED/></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<xsl:if test="$m_class_ = 'BUS'">
<xsl:variable name="num_bifs_on_bus_" select="count(key('G_MAP_ALL_BIFS_BY_BUS',$m_instance_))"/>
<!-- <xsl:if test="$G_DEBUG='TRUE'"><xsl:message>BBBBBB <xsl:value-of select="$m_instance_"/> has <xsl:value-of select="$num_bifs_on_bus_"/> bifs </xsl:message></xsl:if> -->
<xsl:for-each select="key('G_MAP_ALL_BIFS_BY_BUS',$m_instance_)">
<xsl:variable name="b_name_" select="@NAME"/>
<xsl:variable name="b_type_" select="@TYPE"/>
<xsl:variable name="b_inst_" select="../../@INSTANCE"/>
<xsl:variable name="b_icls_" select="../../@MODCLASS"/>
<xsl:variable name="is_mast_in_focus_" select="count($G_ROOT/SAV/MASTER[(@INSTANCE = $b_inst_)])"/>
<xsl:variable name="is_peri_in_focus_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[@NAME = $b_inst_])"/>
<xsl:if test="(($is_peri_in_focus_ + $is_mast_in_focus_) = 0)"><UNFOCUSED/></xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:variable name="mod_id_" select="@INSTANCE"/>
<xsl:variable name="potential_masts_id_" select="concat('__GROUP_MASTER__.',@INSTANCE)"/>
<xsl:variable name="is_master_" select="count($G_GROUPS/BLOCK[(@ID = $potential_masts_id_)])"/>
<xsl:variable name="is_focused_on_" select="count($G_ROOT/SAV/MASTER[(@INSTANCE = $mod_id_)])"/>
<xsl:variable name="is_peripheral_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[@NAME = $mod_id_])"/>
<xsl:variable name="num_potential_bifs_" select="count(exsl:node-set($bif_scope_)/POTENTIAL)"/>
<xsl:variable name="num_connected_bifs_" select="count(exsl:node-set($bif_scope_)/CONNECTED)"/>
<xsl:variable name="num_unfocused_bifs_" select="count(exsl:node-set($bif_scope_)/UNFOCUSED)"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> CONNECTED BIFS <xsl:value-of select="$num_connected_bifs_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> POTENTIAL BIFS <xsl:value-of select="$num_potential_bifs_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> IS PERIPHERAL <xsl:value-of select="$is_peripheral_"/></xsl:message></xsl:if>
<xsl:if test="((@MODCLASS = 'BUS') or ($num_connected_bifs_ + $is_focused_on_ + $num_potential_bifs_ + $is_peripheral_) &gt; 0)">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PLACING MODULE <xsl:value-of select="@INSTANCE"/></xsl:message></xsl:if>
<xsl:choose>
<xsl:when test="$G_ROOT/SAV/@MODE = 'TREE'">
<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="((@MODCLASS = 'BUS') or (($num_connected_bifs_ + $is_peripheral_ + $is_focused_on_) &gt; 0))">
<xsl:attribute name="CONNECTED_INDEX"><xsl:value-of select="@MHS_INDEX"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="POTENTIAL_INDEX"><xsl:value-of select="@MHS_INDEX"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $mod_id_)]) &gt; 0">
<xsl:attribute name="RGB_BG"><xsl:value-of select="$COL_FOCUSED_MASTER"/></xsl:attribute>
</xsl:when>
<xsl:when test="$num_unfocused_bifs_ &gt; 0">
<xsl:attribute name="RGB_FG"><xsl:value-of select="$COL_BG_OUTOF_FOCUS_CONNECTIONS"/></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_}"/>
<xsl:apply-templates select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]" mode="_bif_view_focusing_on_connected"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]" mode="_bif_view_focusing_on_connected"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<!--
===================================================
THE MODULE TEMPLATE FOR POTENTIAL MODULES
IN BIF VIEW PROC FOCUS
===================================================
-->
<xsl:template match="MODULE" mode="_bif_view_focusing_on_potentials">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>EXAMINING POTENTIAL MODULE <xsl:value-of select="@INSTANCE"/></xsl:message></xsl:if>
<xsl:variable name="m_instance_" select="@INSTANCE"/>
<xsl:variable name="m_modclass_" select="@MODCLASS"/>
<xsl:variable name="bif_scope_">
<xsl:for-each select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
<xsl:variable name="b_std_" select="@BUSSTD"/>
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')"><POTENTIAL/></xsl:when>
<xsl:when test="((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR')) and (count(key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]) &gt; 0)">
<xsl:variable name="p2p_scope_">
<xsl:for-each select="$G_SYS_MODS"> <!-- To set the right scope for the keys -->
<xsl:for-each select="key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]">
<xsl:variable name="b_instance_" select="../../@INSTANCE"/>
<xsl:variable name="b_modclass_" select="../../@MODCLASS"/>
<xsl:variable name="num_mast_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_])"/>
<xsl:variable name="num_peri_connections_">
<xsl:choose>
<xsl:when test="((($m_modclass_ = 'PROCESSOR') and ($b_modclass_ = 'PROCESSOR')) or not($b_modclass_ = 'PROCESSOR'))">
<xsl:value-of select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $b_instance_)])"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="(($num_mast_connections_ + $num_peri_connections_) &gt; 0)"><INSCOPE/></xsl:if>
<xsl:if test="(($num_mast_connections_ + $num_peri_connections_) = 0) and not($m_modclass_ = 'MEMORY') and not($m_modclass_ = 'MEMORY_CNTLR')"><UNFOCUSED/></xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="num_p2p_inscope_" select="count(exsl:node-set($p2p_scope_)/INSCOPE)"/>
<xsl:variable name="num_p2p_unfocused_" select="count(exsl:node-set($p2p_scope_)/UNFOCUSED)"/>
<xsl:if test="$num_p2p_inscope_ &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="$num_p2p_unfocused_ &gt; 0"><UNFOCUSED/></xsl:if>
</xsl:when>
<xsl:when test="(@TYPE = 'SLAVE') and not(MASTERS/MASTER)">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="($b_bus_ = '__NOC__') and count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_std_]) &gt; 0"><POTENTIAL/></xsl:if>
</xsl:when>
<xsl:when test="(MASTERS/MASTER)">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><POTENTIAL/></xsl:if>
<xsl:for-each select="MASTERS/MASTER">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:choose>
<xsl:when test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:when test="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:otherwise><UNFOCUSED/></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:for-each>
<xsl:if test="$m_modclass_ = 'BUS'">
<xsl:variable name="num_bifs_on_bus_" select="count(key('G_MAP_ALL_BIFS_BY_BUS',$m_instance_))"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>BUS <xsl:value-of select="$m_instance_"/> has <xsl:value-of select="$num_bifs_on_bus_"/> bifs </xsl:message></xsl:if>
<xsl:for-each select="key('G_MAP_ALL_BIFS_BY_BUS',$m_instance_)">
<xsl:variable name="b_name_" select="@NAME"/>
<xsl:variable name="b_type_" select="@TYPE"/>
<xsl:variable name="b_inst_" select="../../@INSTANCE"/>
<xsl:variable name="b_icls_" select="../../@MODCLASS"/>
<xsl:variable name="is_mast_in_focus_" select="count($G_ROOT/SAV/MASTER[(@INSTANCE = $b_inst_)])"/>
<xsl:variable name="is_peri_in_focus_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[@NAME = $b_inst_])"/>
<xsl:if test="(($is_peri_in_focus_ + $is_mast_in_focus_) = 0)"><UNFOCUSED/></xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:variable name="mod_id_" select="@INSTANCE"/>
<xsl:variable name="potential_masts_id_" select="concat('__GROUP_MASTER__.',@INSTANCE)"/>
<xsl:variable name="is_master_" select="count($G_GROUPS/BLOCK[(@ID = $potential_masts_id_)])"/>
<xsl:variable name="is_peripheral_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[@NAME = $mod_id_])"/>
<xsl:variable name="num_potential_bifs_" select="count(exsl:node-set($bif_scope_)/POTENTIAL)"/>
<xsl:variable name="num_connected_bifs_" select="count(exsl:node-set($bif_scope_)/CONNECTED)"/>
<xsl:variable name="num_unfocused_bifs_" select="count(exsl:node-set($bif_scope_)/UNFOCUSED)"/>
<!--
-->
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> <xsl:value-of select="$num_connected_bifs_"/> connected BIFS</xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> <xsl:value-of select="$num_potential_bifs_"/> potential bifs </xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> <xsl:value-of select="$num_unfocused_bifs_"/> unfocused bifs </xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> <xsl:value-of select="$is_peripheral_"/> is a peripheral</xsl:message></xsl:if>
<xsl:if test="(($num_connected_bifs_ + $num_potential_bifs_ + $is_peripheral_) &gt; 0)">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING POTENTIAL MODULE <xsl:value-of select="@INSTANCE"/></xsl:message></xsl:if>
<xsl:choose>
<xsl:when test="$G_ROOT/SAV/@MODE = 'TREE'">
<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="(($is_peripheral_ &gt; 0) or ($num_connected_bifs_ &gt; 0))">
<xsl:attribute name="CONNECTED_INDEX"><xsl:value-of select="@MHS_INDEX"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="POTENTIAL_INDEX"><xsl:value-of select="@MHS_INDEX"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $mod_id_)]) &gt; 0">
<xsl:attribute name="RGB_BG"><xsl:value-of select="$COL_FOCUSED_MASTER"/></xsl:attribute>
</xsl:when>
<xsl:when test="$num_unfocused_bifs_ &gt; 0">
<xsl:attribute name="RGB_FG"><xsl:value-of select="$COL_BG_OUTOF_FOCUS_CONNECTIONS"/></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_}"/>
<xsl:apply-templates select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]" mode="_bif_view_focusing_on_potentials"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]" mode="_bif_view_focusing_on_potentials"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<!--
+++++++++++++++++++++++++++++++++++++++++++++++++++++
BUS INTERFACE TEMPLATES
+++++++++++++++++++++++++++++++++++++++++++++++++++++
-->
<!--
===================================================
THE BIF TEMPLATE FOR CONNECTED MODULES
IN BIF VIEW PROC FOCUS
===================================================
-->
<xsl:template match="BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]" mode="_bif_view_focusing_on_connected">
<xsl:variable name="m_instance_" select="../../@INSTANCE"/>
<xsl:variable name="b_std_" select="@BUSSTD"/>
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:variable name="b_name_" select="@NAME"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> EXAMINING CONNECTED INTERFACE <xsl:value-of select="$m_instance_"/>.<xsl:value-of select="$b_name_"/></xsl:message></xsl:if>
<xsl:variable name="bif_scope_">
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')"><POTENTIAL/></xsl:when>
<xsl:when test="((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR')) and (count(key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]) &gt; 0)">
<xsl:variable name="p2p_scope_">
<xsl:for-each select="$G_SYS_MODS"> <!-- to put in right scope for key below -->
<xsl:for-each select="key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]">
<xsl:variable name="p2p_bifname_" select="@NAME"/>
<xsl:variable name="p2p_instance_" select="../../@INSTANCE"/>
<xsl:variable name="num_proc_connections_" select="count(key('G_MAP_PROCESSORS',$p2p_instance_))"/>
<xsl:variable name="num_mast_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_])"/>
<xsl:variable name="num_peri_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $p2p_instance_)])"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> <xsl:value-of select="$p2p_instance_"/>.<xsl:value-of select="$p2p_bifname_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PROC CONNECTIONS <xsl:value-of select="$num_proc_connections_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> MAST CONNECTIONS <xsl:value-of select="$num_mast_connections_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PERI CONNECTIONS <xsl:value-of select="$num_peri_connections_"/></xsl:message></xsl:if>
<xsl:if test="($num_mast_connections_ = 0) and ($num_proc_connections_ &gt; 0)"><OUTSCOPE/></xsl:if>
<xsl:if test="($num_mast_connections_ &gt; 0) or ($num_peri_connections_ &gt; 0)"><INSCOPE/></xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="num_p2p_inscope_" select="count(exsl:node-set($p2p_scope_)/INSCOPE)"/>
<xsl:variable name="num_p2p_outscope_" select="count(exsl:node-set($p2p_scope_)/OUTSCOPE)"/>
<xsl:if test="(($num_p2p_inscope_ &gt; 0) and ($num_p2p_outscope_ = 0))"><CONNECTED/></xsl:if>
</xsl:when>
<xsl:when test="(@TYPE = 'MASTER')">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><CONNECTED/></xsl:if>
</xsl:when>
<xsl:when test="(@TYPE = 'SLAVE') and not(MASTERS/MASTER)">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="($b_bus_ = '__NOC__') and count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_std_]) &gt; 0"><POTENTIAL/></xsl:if>
</xsl:when>
<xsl:when test="(MASTERS/MASTER)">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><POTENTIAL/></xsl:if>
<xsl:for-each select="MASTERS/MASTER">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:choose>
<xsl:when test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:when test="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:otherwise><UNFOCUSED/></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="num_scope_unfocuseds_" select="count(exsl:node-set($bif_scope_)/UNFOCUSED)"/>
<xsl:variable name="num_scope_potentials_" select="count(exsl:node-set($bif_scope_)/POTENTIAL)"/>
<xsl:variable name="num_scope_connecteds_" select="count(exsl:node-set($bif_scope_)/CONNECTED)"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> CONNECTED SCOPE <xsl:value-of select="$num_scope_connecteds_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> POTENTIAL SCOPE <xsl:value-of select="$num_scope_potentials_"/></xsl:message></xsl:if>
<xsl:variable name="include_bif_">
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')">TRUE</xsl:when>
<xsl:when test="(((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR')) and ($num_scope_connecteds_ &gt; 0))">TRUE</xsl:when>
<xsl:when test="((@TYPE = 'MASTER') or (@TYPE = 'SLAVE') or (@TYPE = 'MASTER_SLAVE')) and (($num_scope_potentials_ &gt; 0) or ($num_scope_connecteds_ &gt; 0))">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="($include_bif_ = 'TRUE')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PLACING CONNECTED INTERFACE <xsl:value-of select="$m_instance_"/>.<xsl:value-of select="$b_name_"/></xsl:message></xsl:if>
<xsl:variable name="bif_col_">
<xsl:choose>
<xsl:when test="($num_scope_unfocuseds_ &gt; 0)"><xsl:value-of select="$COL_BG_OUTOF_FOCUS_CONNECTIONS"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:call-template name="WRITE_VIEW_BIF_TREE_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
<xsl:with-param name="iBifCol" select="$bif_col_"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$G_ROOT/SAV/@MODE = 'FLAT'">
<xsl:call-template name="WRITE_VIEW_BIF_FLAT_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
<xsl:with-param name="iBifCol" select="$bif_col_"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
<!--
===================================================
THE BIF TEMPLATE FOR POTENTIAL MODULES
IN BIF VIEW PROC FOCUS
===================================================
-->
<xsl:template match="BUSINTERFACES/BUSINTERFACE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]" mode="_bif_view_focusing_on_potentials">
<xsl:variable name="m_instance_" select="../../@INSTANCE"/>
<xsl:variable name="b_name_" select="@NAME"/>
<xsl:variable name="b_std_" select="@BUSSTD"/>
<xsl:variable name="b_bus_" select="@BUSNAME"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> EXAMINING POTENTIAL INTERFACE <xsl:value-of select="$m_instance_"/>.<xsl:value-of select="$b_name_"/></xsl:message></xsl:if>
<xsl:variable name="bif_scope_">
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')"><POTENTIAL/></xsl:when>
<xsl:when test="((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR')) and (count(key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]) &gt; 0)">
<xsl:variable name="p2p_scope_">
<xsl:for-each select="$G_SYS_MODS">
<xsl:for-each select="key('G_MAP_P2P_BIFS',$b_bus_)[not(@BUSNAME = '__NOC__')]">
<xsl:variable name="b_instance_" select="../../@INSTANCE"/>
<xsl:variable name="num_proc_connections_" select="count(key('G_MAP_PROCESSORS',$b_instance_))"/>
<xsl:variable name="num_mast_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_])"/>
<xsl:variable name="num_peri_connections_" select="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $b_instance_)])"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PROC CONNECTIONS <xsl:value-of select="$num_proc_connections_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> MAST CONNECTIONS <xsl:value-of select="$num_mast_connections_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PERI CONNECTIONS <xsl:value-of select="$num_peri_connections_"/></xsl:message></xsl:if>
<xsl:if test="($num_mast_connections_ = 0) and ($num_proc_connections_ &gt; 0)"><OUTSCOPE/></xsl:if>
<xsl:if test="($num_mast_connections_ &gt; 0) or ($num_peri_connections_ &gt; 0)"><INSCOPE/></xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="num_p2p_inscope_" select="count(exsl:node-set($p2p_scope_)/INSCOPE)"/>
<xsl:variable name="num_p2p_outscope_" select="count(exsl:node-set($p2p_scope_)/OUTSCOPE)"/>
<xsl:if test="(($num_p2p_inscope_ &gt; 0) and ($num_p2p_outscope_ = 0))"><CONNECTED/></xsl:if>
</xsl:when>
<xsl:when test="(((@TYPE = 'SLAVE') and not(MASTERS/MASTER)) or (@TYPE = 'MASTER'))">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><CONNECTED/></xsl:if>
<xsl:if test="($b_bus_ = '__NOC__') and count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@BUSSTD = $b_std_]) &gt; 0"><POTENTIAL/></xsl:if>
</xsl:when>
<xsl:when test="(MASTERS/MASTER)">
<xsl:if test="count(exsl:node-set($G_FOCUSED_SCOPE)/BUS[@NAME = $b_bus_]) &gt; 0"><POTENTIAL/></xsl:if>
<xsl:for-each select="MASTERS/MASTER">
<xsl:variable name="m_inst_" select="@INSTANCE"/>
<xsl:choose>
<xsl:when test="count($G_ROOT/SAV/MASTER[(@INSTANCE = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:when test="count(exsl:node-set($G_FOCUSED_SCOPE)/PERIPHERAL[(@NAME = $m_inst_)]) &gt; 0"><CONNECTED/></xsl:when>
<xsl:otherwise><UNFOCUSED/></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="num_scope_potentials_" select="count(exsl:node-set($bif_scope_)/POTENTIAL)"/>
<xsl:variable name="num_scope_connecteds_" select="count(exsl:node-set($bif_scope_)/CONNECTED)"/>
<xsl:variable name="num_scope_unfocuseds_" select="count(exsl:node-set($bif_scope_)/UNFOCUSED)"/>
<xsl:variable name="include_bif_">
<xsl:choose>
<xsl:when test="($b_bus_ = '__NOC__')">TRUE</xsl:when>
<xsl:when test="(((@TYPE = 'TARGET') or (@TYPE = 'INITIATOR')) and ($num_scope_connecteds_ &gt; 0))">TRUE</xsl:when>
<xsl:when test="((@TYPE = 'MASTER') or (@TYPE = 'SLAVE') or (@TYPE = 'MASTER_SLAVE')) and (($num_scope_potentials_ &gt; 0) or ($num_scope_connecteds_ &gt; 0))">TRUE</xsl:when>
<xsl:otherwise>FALSE</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="bif_col_">
<xsl:choose>
<xsl:when test="($num_scope_unfocuseds_ &gt; 0)"><xsl:value-of select="$COL_BG_OUTOF_FOCUS_CONNECTIONS"/></xsl:when>
<xsl:otherwise>__NONE__</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="($include_bif_ = 'TRUE')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> PLACING POTENTIAL INTERFACE <xsl:value-of select="$m_instance_"/>.<xsl:value-of select="$b_name_"/></xsl:message></xsl:if>
<xsl:if test="$G_ROOT/SAV/@MODE = 'TREE'">
<xsl:call-template name="WRITE_VIEW_BIF_TREE_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
<xsl:with-param name="iBifCol" select="$bif_col_"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$G_ROOT/SAV/@MODE = 'FLAT'">
<xsl:call-template name="WRITE_VIEW_BIF_FLAT_SET">
<xsl:with-param name="iModRef" select="../.."/>
<xsl:with-param name="iBifRef" select="self::node()"/>
<xsl:with-param name="iBifCol" select="$bif_col_"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
<!-- THINGS TO IGNORE -->
<!-- Ignore all non valid bus interfaces -->
<xsl:template match="MODULE/DESCRIPTION" mode="_bif_view_focusing_on_potentials">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/PARAMETERS" mode="_bif_view_focusing_on_potentials">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/DOCUMENTATION" mode="_bif_view_focusing_on_potentials">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/LICENSEINFO" mode="_bif_view_focusing_on_potentials">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<!-- Ignore all non valid bus interfaces -->
<xsl:template match="BUSINTERFACES/BUSINTERFACE[(@IS_VALID = 'FALSE')]" mode="_bif_view_focusing_on_potentials">
</xsl:template>
<xsl:template match="MODULE/DESCRIPTION" mode="_bif_view_focusing_on_connected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/PARAMETERS" mode="_bif_view_focusing_on_connected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/DOCUMENTATION" mode="_bif_view_focusing_on_connected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/LICENSEINFO" mode="_bif_view_focusing_on_connected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="BUSINTERFACES/BUSINTERFACE[(@IS_VALID = 'FALSE')]" mode="_bif_view_focusing_on_connected">
</xsl:template>
<!-- Ignore all non valid bus interfaces -->
<xsl:template match="SAV" mode="_port_view_focusing_on_selected">
</xsl:template>
<xsl:template match="MODULE/DESCRIPTION" mode="_port_view_focusing_on_selected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/PARAMETERS" mode="_port_view_focusing_on_selected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/DOCUMENTATION" mode="_port_view_focusing_on_selected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<xsl:template match="MODULE/LICENSEINFO" mode="_port_view_focusing_on_selected">
<!-- <xsl:message>Ignoring invalid bus interface <xsl:value-of select="@NAME"/></xsl:message> -->
</xsl:template>
<!-- Ignore all non valid bus interfaces -->
<xsl:template match="BUSINTERFACES/BUSINTERFACE[(@IS_VALID = 'FALSE')]" mode="_port_view_focusing_on_selected">
</xsl:template>
<!--
Only write bus interfaces that are valid for non point to point interfaces
that have busstds the processor can see
-->
<!--
===============================================
GROUP VIEW TRANSFORMS
===============================================
-->
<xsl:template name="WRITE_VIEW_GROUPS">
<xsl:param name="iModules"/>
<xsl:if test="$G_DEBUG='TRUE'">
<!--
<xsl:message>BLKD AREA = <xsl:value-of select="$blkd_full_w_"/> X <xsl:value-of select="$blkd_full_h_"/></xsl:message>
<xsl:message>NUMOF BUSSTD COLORS = <xsl:value-of select="$COL_BUSSTDS_NUMOF"/></xsl:message>
<xsl:message>NUMOF INTERFACE TYPES= <xsl:value-of select="$G_IFTYPES_NUMOF"/></xsl:message>
<xsl:message>NUMOF DIRS = <xsl:value-of select="$G_BLKD_COMPASS_DIRS_NUMOF"/></xsl:message>
<xsl:apply-templates select="$G_BLOCKS/node()" mode="_place_module_blocks_"/>
-->
</xsl:if>
<xsl:element name="SET">
<xsl:attribute name="CLASS">PROJECT</xsl:attribute>
<xsl:attribute name="VIEW_ID">BUSINTERFACE</xsl:attribute>
<xsl:attribute name="DISPLAYMODE">TREE</xsl:attribute>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="$G_BLOCKS"/>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="WRITE_VIEW_BIF_GROUPS">
<xsl:param name="iModules"/>
<xsl:for-each select="$iModules/BLOCK[@ID and not(BLOCK) and not(@C)]">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING BUS <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_id_" select="@ID"/>
<xsl:variable name="m_module_" select="$G_SYS_MODS/MODULE[@INSTANCE = $m_id_]"/>
<xsl:variable name="m_instance_" select="$m_module_/@INSTANCE"/>
<xsl:variable name="m_version_" select="$m_module_/@HWVERSION"/>
<xsl:variable name="m_type_" select="$m_module_/@MODTYPE"/>
<xsl:variable name="m_class_" select="$m_module_/@MODCLASS"/>
<xsl:variable name="m_busstd_" select="$m_module_/@BUSSTD"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@ID"/></xsl:attribute>
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE">TEXTBOX</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_instance_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">MODTYPE</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_type_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Version</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">HWVERSION</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_version_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Classification</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">IPCLASS</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_busstd_"/> BUS</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="$iModules/BLOCK[@ID and BLOCK]">
<xsl:choose>
<xsl:when test="not(starts-with(@ID,'__')) and BLOCK[@C] and (not(BLOCK/BLOCK) or BLOCK/BLOCK[@CP])">
<!--
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING MODULE <xsl:value-of select="@ID"/></xsl:message></xsl:if>
-->
<xsl:variable name="m_id_" select="@ID"/>
<xsl:variable name="m_module_" select="$G_SYS_MODS/MODULE[@INSTANCE = $m_id_]"/>
<xsl:variable name="m_instance_" select="$m_module_/@INSTANCE"/>
<xsl:variable name="m_type_" select="$m_module_/@MODTYPE"/>
<xsl:variable name="m_class_" select="$m_module_/@MODCLASS"/>
<xsl:variable name="m_version_" select="$m_module_/@HWVERSION"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@ID"/></xsl:attribute>
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE">TEXTBOX</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_instance_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">MODTYPE</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_type_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Version</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">HWVERSION</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_version_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">IP Classification</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">IPCLASS</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$m_class_"/></xsl:attribute>
</xsl:element>
<xsl:for-each select="BLOCK[@C and @ID]">
<xsl:variable name="b_bus_" select="@C"/>
<xsl:variable name="b_name_" select="@ID"/>
<xsl:variable name="b_if_" select="$m_module_/BUSINTERFACES/BUSINTERFACE[(@NAME = $b_name_)]"/>
<xsl:variable name="b_type_" select="$b_if_/@TYPE"/>
<xsl:variable name="b_busstd_" select="$b_if_/@BUSSTD"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING BIF <xsl:value-of select="$b_name_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> TYPE <xsl:value-of select="$b_type_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> BUS <xsl:value-of select="$b_bus_"/></xsl:message></xsl:if>
<xsl:variable name="b_busNameViewType_">
<xsl:choose>
<xsl:when test="$b_type_ = 'INITIATOR'">TEXTBOX</xsl:when>
<xsl:when test="starts-with(@ID,'S_AXI')">BUTTON</xsl:when>
<xsl:when test="starts-with(@ID,'S0_AXI')">BUTTON</xsl:when>
<xsl:when test="starts-with(@ID,'S1_AXI')">BUTTON</xsl:when>
<xsl:otherwise>DROPDOWN</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="b_busName_">
<xsl:choose>
<xsl:when test="$b_if_/MASTERS/MASTER">
<xsl:variable name="mastersList_"><xsl:for-each select="$b_if_/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($b_bus_,':',$mastersList_)"/>
<xsl:value-of select="$mastersConn_"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$b_bus_"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> VIEWTYPE <xsl:value-of select="$b_busNameViewType_"/></xsl:message></xsl:if>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message> BUSNAME <xsl:value-of select="$b_busName_"/></xsl:message></xsl:if>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="@ID"/></xsl:attribute>
<xsl:attribute name="CLASS">BUSINTERFACE</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">NAME</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">NAME</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$b_name_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Bus Name</xsl:attribute>
<xsl:attribute name="VIEWTYPE"><xsl:value-of select="$b_busNameViewType_"/></xsl:attribute>
<xsl:attribute name="NAME">BUSNAME</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$b_busName_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Type</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">TYPE</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$b_type_"/></xsl:attribute>
</xsl:element>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">Bus Standard</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">BUSSTD</xsl:attribute>
<xsl:attribute name="VALUE"><xsl:value-of select="$b_busstd_"/></xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_PROCESSOR__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PROCESSOR GROUP<xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="p_id_" select="substring-after(@ID,'__GROUP_PROCESSOR__')"/>
<xsl:variable name="m_id_" select="concat('PROCESSOR',$p_id_)"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="$m_id_"/></xsl:attribute>
<xsl:attribute name="CLASS">GROUP</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">NAME</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE">Subsystem of <xsl:value-of select="$p_id_"/></xsl:attribute>
</xsl:element>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_MASTER__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>MASTER GROUP<xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="p_id_" select="substring-after(@ID,'__GROUP_MASTER__')"/>
<xsl:variable name="m_id_" select="concat('MASTER',$p_id_)"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="$m_id_"/></xsl:attribute>
<xsl:attribute name="CLASS">GROUP</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">NAME</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE">Subsystem of <xsl:value-of select="$p_id_"/></xsl:attribute>
</xsl:element>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_SHARED__')">
<xsl:variable name="s_id_" select="substring-after(@ID,'__GROUP_SHARED__')"/>
<xsl:variable name="m_id_" select="concat('SHARED',$s_id_)"/>
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING SHARED PERIPHERALS <xsl:value-of select="$s_id_"/></xsl:message></xsl:if>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="$m_id_"/></xsl:attribute>
<xsl:attribute name="CLASS">GROUP</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">NAME</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE">Peripherals shared by <xsl:value-of select="$s_id_"/></xsl:attribute>
</xsl:element>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_MEMORY__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING MEMORY <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_id_" select="substring-after(@ID,'__GROUP_MEMORY__')"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="$m_id_"/></xsl:attribute>
<xsl:attribute name="CLASS">GROUP</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">NAME</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE">(Memory) <xsl:value-of select="$m_id_"/></xsl:attribute>
</xsl:element>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_PERIPHERAL__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING PERIPHERAL <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="starts-with(@ID,'__GROUP_SLAVES__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING SLAVES <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:call-template name="WRITE_VIEW_BIF_GROUPS">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:when>
<!--
<xsl:when test="starts-with(@ID,'__GROUP_SLAVES__')">
<xsl:if test="$G_DEBUG='TRUE'"><xsl:message>PLACING SLAVES GOUP <xsl:value-of select="@ID"/></xsl:message></xsl:if>
<xsl:variable name="m_id_" select="substring-after(@ID,'__GROUP_SLAVES__')"/>
<xsl:element name="SET">
<xsl:attribute name="ID"><xsl:value-of select="$m_id_"/></xsl:attribute>
<xsl:attribute name="CLASS">GROUP</xsl:attribute>
<xsl:element name="VARIABLE">
<xsl:attribute name="VIEWDISP">NAME</xsl:attribute>
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
<xsl:attribute name="VALUE">(Slaves of) <xsl:value-of select="$m_id_"/></xsl:attribute>
</xsl:element>
<xsl:call-template name="F_Write_XTeller_MODULES">
<xsl:with-param name="iModules" select="self::node()"/>
</xsl:call-template>
</xsl:element>
</xsl:when>
-->
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<?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="@SENSITIVITY"/></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>
<SAV MODE="TREE" VIEW="ADDRESS"/>
\ No newline at end of file
<?xml version='1.0' encoding='UTF-8'?>
<report-views version="2.0" >
<header>
<DateModified>2012-03-15T15:58:06</DateModified>
<ModuleName>system</ModuleName>
<SummaryTimeStamp>2012-03-15T15:58:05</SummaryTimeStamp>
<SavedFilePath>C:/Users/mjlyons/workspace/vSPI/projnav/xps/__xps/ise/system.xreport</SavedFilePath>
<FilterFile>filter.filter</FilterFile>
<SavedFilterFilePath>C:/Users/mjlyons/workspace/vSPI/projnav/xps/__xps/ise</SavedFilterFilePath>
<DateInitialized>2012-02-28T10:59:37</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="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="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>
MessageCaptureEnabled: TRUE
MessageFilteringEnabled: FALSE
IncrementalMessagingEnabled: TRUE
-p xc6slx45csg324-2 -lang vhdl$(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst
-p spartan6 -lang vhdl$(PROJECT_SEARCHPATHOPT) $(GLOBAL_SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst -s isim
This source diff could not be displayed because it is too large. You can view the blob instead.
-device xc6slx45csg324-2 data\system.ucf 7 0
-device xc6slx45csg324-2 data\system.ucf 0
------------------------------------------------------------------------------
-- clock_generator_0.log
------------------------------------------------------------------------------
Clock generation result : PASSED
------------------------------------------------------------------------------
-- end of clock_generator_0.log
------------------------------------------------------------------------------
# Atlys
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<0> LOC=E4 | IOSTANDARD=LVCMOS18;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<1> LOC=T5 | IOSTANDARD=LVCMOS33;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<2> LOC=R5 | IOSTANDARD=LVCMOS33;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<3> LOC=P12 | IOSTANDARD=LVCMOS33;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<4> LOC=P15 | IOSTANDARD=LVCMOS33;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<5> LOC=C14 | IOSTANDARD=LVCMOS33;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<6> LOC=D14 | IOSTANDARD=LVCMOS33;
Net fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin<7> LOC=A10 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<0> LOC=N12 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<1> LOC=P16 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<2> LOC=D4 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<3> LOC=M13 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<4> LOC=L14 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<5> LOC=N14 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<6> LOC=M14 | IOSTANDARD=LVCMOS33;
Net fpga_0_LEDs_8Bits_GPIO_IO_O_pin<7> LOC=U18 | IOSTANDARD=LVCMOS33;
Net fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin<0> LOC=N4 | IOSTANDARD=LVCMOS18;
Net fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin<1> LOC=P4 | IOSTANDARD=LVCMOS18;
Net fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin<2> LOC=P3 | IOSTANDARD=LVCMOS18;
Net fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin<3> LOC=F6 | IOSTANDARD=LVCMOS18;
Net fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin<4> LOC=F5 | IOSTANDARD=LVCMOS18;
Net fpga_0_clk_1_sys_clk_pin TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;
Net fpga_0_clk_1_sys_clk_pin LOC=L15 | IOSTANDARD=LVCMOS33;
Net fpga_0_rst_1_sys_rst_pin TIG;
Net fpga_0_rst_1_sys_rst_pin LOC=T15 | IOSTANDARD=LVCMOS33;
# SPI
NET "spiifc_0_SPI_CLK_pin" LOC = R10 | IOSTANDARD = LVCMOS33;
NET "spiifc_0_SPI_MISO_pin" LOC = U16 | IOSTANDARD = LVCMOS33;
NET "spiifc_0_SPI_MOSI_pin" LOC = U15 | IOSTANDARD = LVCMOS33;
NET "spiifc_0_SPI_SS_pin" LOC = M11 | IOSTANDARD = LVCMOS33;
##############################################################################
## Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps/drivers/spiifc_v1_00_a/data/spiifc_v2_1_0.mdd
## Description: Microprocessor Driver Definition
## Date: Tue Feb 28 11:11:28 2012 (by Create and Import Peripheral Wizard)
##############################################################################
OPTION psf_version = 2.1.0;
BEGIN DRIVER spiifc
OPTION supported_peripherals = (spiifc);
OPTION depends = (common_v1_00_a);
OPTION copyfiles = all;
BEGIN ARRAY interrupt_handler
PROPERTY desc = "Interrupt Handler Information";
PROPERTY size = 1, permit = none;
PARAM name = int_handler, default = SPIIFC_Intr_DefaultHandler, desc = "Name of Interrupt Handler", type = string;
PARAM name = int_port, default = IP2INTC_Irpt, desc = "Interrupt pin associated with the interrupt handler", permit = none;
END ARRAY
END DRIVER
##############################################################################
## Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps/drivers/spiifc_v1_00_a/data/spiifc_v2_1_0.tcl
## Description: Microprocess Driver Command (tcl)
## Date: Tue Feb 28 11:11:28 2012 (by Create and Import Peripheral Wizard)
##############################################################################
#uses "xillib.tcl"
proc generate {drv_handle} {
xdefine_include_file $drv_handle "xparameters.h" "spiifc" "NUM_INSTANCES" "DEVICE_ID" "C_BASEADDR" "C_HIGHADDR" "C_MEM0_BASEADDR" "C_MEM0_HIGHADDR" "C_MEM1_BASEADDR" "C_MEM1_HIGHADDR"
}
##############################################################################
## Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps/drivers/spiifc_v1_00_a/src/Makefile
## Description: Microprocessor Driver Makefile
## Date: Tue Feb 28 11:11:28 2012 (by Create and Import Peripheral Wizard)
##############################################################################
COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a
RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}
INCLUDEFILES=*.h
LIBSOURCES=*.c
OUTS = *.o
libs:
echo "Compiling spiifc"
$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS}
make clean
include:
${CP} $(INCLUDEFILES) $(INCLUDEDIR)
clean:
rm -rf ${OUTS}
/*****************************************************************************
* Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps/drivers/spiifc_v1_00_a/src/spiifc.c
* Version: 1.00.a
* Description: spiifc Driver Source File
* Date: Tue Feb 28 11:11:28 2012 (by Create and Import Peripheral Wizard)
*****************************************************************************/
/***************************** Include Files *******************************/
#include "spiifc.h"
/************************** Function Definitions ***************************/
/**
*
* Enable all possible interrupts from SPIIFC device.
*
* @param baseaddr_p is the base address of the SPIIFC device.
*
* @return None.
*
* @note None.
*
*/
void SPIIFC_EnableInterrupt(void * baseaddr_p)
{
Xuint32 baseaddr;
baseaddr = (Xuint32) baseaddr_p;
/*
* Enable all interrupt source from user logic.
*/
SPIIFC_mWriteReg(baseaddr, SPIIFC_INTR_IPIER_OFFSET, 0x00000001);
/*
* Set global interrupt enable.
*/
SPIIFC_mWriteReg(baseaddr, SPIIFC_INTR_DGIER_OFFSET, INTR_GIE_MASK);
}
/**
*
* Example interrupt controller handler for SPIIFC device.
* This is to show example of how to toggle write back ISR to clear interrupts.
*
* @param baseaddr_p is the base address of the SPIIFC device.
*
* @return None.
*
* @note None.
*
*/
void SPIIFC_Intr_DefaultHandler(void * baseaddr_p)
{
Xuint32 baseaddr;
Xuint32 IntrStatus;
Xuint32 IpStatus;
baseaddr = (Xuint32) baseaddr_p;
{
xil_printf("User logic interrupt! \n\r");
IpStatus = SPIIFC_mReadReg(baseaddr, SPIIFC_INTR_IPISR_OFFSET);
SPIIFC_mWriteReg(baseaddr, SPIIFC_INTR_IPISR_OFFSET, IpStatus);
}
}
/*****************************************************************************
* Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps/drivers/spiifc_v1_00_a/src/spiifc.h
* Version: 1.00.a
* Description: spiifc Driver Header File
* Date: Tue Feb 28 11:11:28 2012 (by Create and Import Peripheral Wizard)
*****************************************************************************/
#ifndef SPIIFC_H
#define SPIIFC_H
/***************************** Include Files *******************************/
#include "xbasic_types.h"
#include "xstatus.h"
#include "xil_io.h"
/************************** Constant Definitions ***************************/
/**
* User Logic Slave Space Offsets
* -- SLV_REG0 : user logic slave module register 0
* -- SLV_REG1 : user logic slave module register 1
* -- SLV_REG2 : user logic slave module register 2
* -- SLV_REG3 : user logic slave module register 3
* -- SLV_REG4 : user logic slave module register 4
* -- SLV_REG5 : user logic slave module register 5
* -- SLV_REG6 : user logic slave module register 6
* -- SLV_REG7 : user logic slave module register 7
* -- SLV_REG8 : user logic slave module register 8
* -- SLV_REG9 : user logic slave module register 9
* -- SLV_REG10 : user logic slave module register 10
* -- SLV_REG11 : user logic slave module register 11
* -- SLV_REG12 : user logic slave module register 12
* -- SLV_REG13 : user logic slave module register 13
* -- SLV_REG14 : user logic slave module register 14
* -- SLV_REG15 : user logic slave module register 15
*/
#define SPIIFC_USER_SLV_SPACE_OFFSET (0x00000000)
#define SPIIFC_SLV_REG0_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000000)
#define SPIIFC_SLV_REG1_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000004)
#define SPIIFC_SLV_REG2_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000008)
#define SPIIFC_SLV_REG3_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x0000000C)
#define SPIIFC_SLV_REG4_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000010)
#define SPIIFC_SLV_REG5_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000014)
#define SPIIFC_SLV_REG6_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000018)
#define SPIIFC_SLV_REG7_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x0000001C)
#define SPIIFC_SLV_REG8_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000020)
#define SPIIFC_SLV_REG9_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000024)
#define SPIIFC_SLV_REG10_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000028)
#define SPIIFC_SLV_REG11_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x0000002C)
#define SPIIFC_SLV_REG12_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000030)
#define SPIIFC_SLV_REG13_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000034)
#define SPIIFC_SLV_REG14_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x00000038)
#define SPIIFC_SLV_REG15_OFFSET (SPIIFC_USER_SLV_SPACE_OFFSET + 0x0000003C)
/**
* Interrupt Controller Space Offsets
* -- INTR_DGIER : device (peripheral) global interrupt enable register
* -- INTR_ISR : ip (user logic) interrupt status register
* -- INTR_IER : ip (user logic) interrupt enable register
*/
#define SPIIFC_INTR_CNTRL_SPACE_OFFSET (0x00000100)
#define SPIIFC_INTR_DGIER_OFFSET (SPIIFC_INTR_CNTRL_SPACE_OFFSET + 0x0000001C)
#define SPIIFC_INTR_IPISR_OFFSET (SPIIFC_INTR_CNTRL_SPACE_OFFSET + 0x00000020)
#define SPIIFC_INTR_IPIER_OFFSET (SPIIFC_INTR_CNTRL_SPACE_OFFSET + 0x00000028)
/**
* Interrupt Controller Masks
* -- INTR_TERR_MASK : transaction error
* -- INTR_DPTO_MASK : data phase time-out
* -- INTR_IPIR_MASK : ip interrupt requeset
* -- INTR_RFDL_MASK : read packet fifo deadlock interrupt request
* -- INTR_WFDL_MASK : write packet fifo deadlock interrupt request
* -- INTR_IID_MASK : interrupt id
* -- INTR_GIE_MASK : global interrupt enable
* -- INTR_NOPEND : the DIPR has no pending interrupts
*/
#define INTR_TERR_MASK (0x00000001UL)
#define INTR_DPTO_MASK (0x00000002UL)
#define INTR_IPIR_MASK (0x00000004UL)
#define INTR_RFDL_MASK (0x00000020UL)
#define INTR_WFDL_MASK (0x00000040UL)
#define INTR_IID_MASK (0x000000FFUL)
#define INTR_GIE_MASK (0x80000000UL)
#define INTR_NOPEND (0x80)
/**************************** Type Definitions *****************************/
/***************** Macros (Inline Functions) Definitions *******************/
/**
*
* Write a value to a SPIIFC register. A 32 bit write is performed.
* If the component is implemented in a smaller width, only the least
* significant data is written.
*
* @param BaseAddress is the base address of the SPIIFC device.
* @param RegOffset is the register offset from the base to write to.
* @param Data is the data written to the register.
*
* @return None.
*
* @note
* C-style signature:
* void SPIIFC_mWriteReg(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Data)
*
*/
#define SPIIFC_mWriteReg(BaseAddress, RegOffset, Data) \
Xil_Out32((BaseAddress) + (RegOffset), (Xuint32)(Data))
/**
*
* Read a value from a SPIIFC register. A 32 bit read is performed.
* If the component is implemented in a smaller width, only the least
* significant data is read from the register. The most significant data
* will be read as 0.
*
* @param BaseAddress is the base address of the SPIIFC device.
* @param RegOffset is the register offset from the base to write to.
*
* @return Data is the data from the register.
*
* @note
* C-style signature:
* Xuint32 SPIIFC_mReadReg(Xuint32 BaseAddress, unsigned RegOffset)
*
*/
#define SPIIFC_mReadReg(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (RegOffset))
/**
*
* Write/Read 32 bit value to/from SPIIFC user logic slave registers.
*
* @param BaseAddress is the base address of the SPIIFC device.
* @param RegOffset is the offset from the slave register to write to or read from.
* @param Value is the data written to the register.
*
* @return Data is the data from the user logic slave register.
*
* @note
* C-style signature:
* void SPIIFC_mWriteSlaveRegn(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Value)
* Xuint32 SPIIFC_mReadSlaveRegn(Xuint32 BaseAddress, unsigned RegOffset)
*
*/
#define SPIIFC_mWriteSlaveReg0(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG0_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg1(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG1_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg2(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG2_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg3(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG3_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg4(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG4_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg5(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG5_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg6(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG6_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg7(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG7_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg8(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG8_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg9(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG9_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg10(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG10_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg11(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG11_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg12(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG12_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg13(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG13_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg14(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG14_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mWriteSlaveReg15(BaseAddress, RegOffset, Value) \
Xil_Out32((BaseAddress) + (SPIIFC_SLV_REG15_OFFSET) + (RegOffset), (Xuint32)(Value))
#define SPIIFC_mReadSlaveReg0(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG0_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg1(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG1_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg2(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG2_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg3(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG3_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg4(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG4_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg5(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG5_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg6(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG6_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg7(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG7_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg8(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG8_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg9(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG9_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg10(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG10_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg11(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG11_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg12(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG12_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg13(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG13_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg14(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG14_OFFSET) + (RegOffset))
#define SPIIFC_mReadSlaveReg15(BaseAddress, RegOffset) \
Xil_In32((BaseAddress) + (SPIIFC_SLV_REG15_OFFSET) + (RegOffset))
/**
*
* Write/Read 32 bit value to/from SPIIFC user logic memory (BRAM).
*
* @param Address is the memory address of the SPIIFC device.
* @param Data is the value written to user logic memory.
*
* @return The data from the user logic memory.
*
* @note
* C-style signature:
* void SPIIFC_mWriteMemory(Xuint32 Address, Xuint32 Data)
* Xuint32 SPIIFC_mReadMemory(Xuint32 Address)
*
*/
#define SPIIFC_mWriteMemory(Address, Data) \
Xil_Out32(Address, (Xuint32)(Data))
#define SPIIFC_mReadMemory(Address) \
Xil_In32(Address)
/************************** Function Prototypes ****************************/
/**
*
* Enable all possible interrupts from SPIIFC device.
*
* @param baseaddr_p is the base address of the SPIIFC device.
*
* @return None.
*
* @note None.
*
*/
void SPIIFC_EnableInterrupt(void * baseaddr_p);
/**
*
* Example interrupt controller handler.
*
* @param baseaddr_p is the base address of the SPIIFC device.
*
* @return None.
*
* @note None.
*
*/
void SPIIFC_Intr_DefaultHandler(void * baseaddr_p);
/**
*
* Run a self-test on the driver/device. Note this may be a destructive test if
* resets of the device are performed.
*
* If the hardware system is not built correctly, this function may never
* return to the caller.
*
* @param baseaddr_p is the base address of the SPIIFC instance to be worked on.
*
* @return
*
* - XST_SUCCESS if all self-test code passed
* - XST_FAILURE if any self-test code failed
*
* @note Caching must be turned off for this function to work.
* @note Self test may fail if data memory and device are not on the same bus.
*
*/
XStatus SPIIFC_SelfTest(void * baseaddr_p);
#endif /** SPIIFC_H */
/*****************************************************************************
* Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps/drivers/spiifc_v1_00_a/src/spiifc_selftest.c
* Version: 1.00.a
* Description: Contains a diagnostic self-test function for the spiifc driver
* Date: Tue Feb 28 11:11:28 2012 (by Create and Import Peripheral Wizard)
*****************************************************************************/
/***************************** Include Files *******************************/
#include "spiifc.h"
/************************** Constant Definitions ***************************/
/************************** Variable Definitions ****************************/
extern Xuint32 LocalBRAM; /* User logic local memory (BRAM) base address */
/************************** Function Definitions ***************************/
/**
*
* Run a self-test on the driver/device. Note this may be a destructive test if
* resets of the device are performed.
*
* If the hardware system is not built correctly, this function may never
* return to the caller.
*
* @param baseaddr_p is the base address of the SPIIFC instance to be worked on.
*
* @return
*
* - XST_SUCCESS if all self-test code passed
* - XST_FAILURE if any self-test code failed
*
* @note Caching must be turned off for this function to work.
* @note Self test may fail if data memory and device are not on the same bus.
*
*/
XStatus SPIIFC_SelfTest(void * baseaddr_p)
{
int Index;
Xuint32 baseaddr;
Xuint8 Reg8Value;
Xuint16 Reg16Value;
Xuint32 Reg32Value;
Xuint32 Mem32Value;
/*
* Check and get the device address
*/
/*
* Base Address maybe 0. Up to developer to uncomment line below.
XASSERT_NONVOID(baseaddr_p != XNULL);
*/
baseaddr = (Xuint32) baseaddr_p;
xil_printf("******************************\n\r");
xil_printf("* User Peripheral Self Test\n\r");
xil_printf("******************************\n\n\r");
/*
* Write to user logic slave module register(s) and read back
*/
xil_printf("User logic slave module test...\n\r");
xil_printf(" - write 1 to slave register 0 word 0\n\r");
SPIIFC_mWriteSlaveReg0(baseaddr, 0, 1);
Reg32Value = SPIIFC_mReadSlaveReg0(baseaddr, 0);
xil_printf(" - read %d from register 0 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 1 )
{
xil_printf(" - slave register 0 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 2 to slave register 1 word 0\n\r");
SPIIFC_mWriteSlaveReg1(baseaddr, 0, 2);
Reg32Value = SPIIFC_mReadSlaveReg1(baseaddr, 0);
xil_printf(" - read %d from register 1 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 2 )
{
xil_printf(" - slave register 1 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 3 to slave register 2 word 0\n\r");
SPIIFC_mWriteSlaveReg2(baseaddr, 0, 3);
Reg32Value = SPIIFC_mReadSlaveReg2(baseaddr, 0);
xil_printf(" - read %d from register 2 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 3 )
{
xil_printf(" - slave register 2 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 4 to slave register 3 word 0\n\r");
SPIIFC_mWriteSlaveReg3(baseaddr, 0, 4);
Reg32Value = SPIIFC_mReadSlaveReg3(baseaddr, 0);
xil_printf(" - read %d from register 3 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 4 )
{
xil_printf(" - slave register 3 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 5 to slave register 4 word 0\n\r");
SPIIFC_mWriteSlaveReg4(baseaddr, 0, 5);
Reg32Value = SPIIFC_mReadSlaveReg4(baseaddr, 0);
xil_printf(" - read %d from register 4 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 5 )
{
xil_printf(" - slave register 4 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 6 to slave register 5 word 0\n\r");
SPIIFC_mWriteSlaveReg5(baseaddr, 0, 6);
Reg32Value = SPIIFC_mReadSlaveReg5(baseaddr, 0);
xil_printf(" - read %d from register 5 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 6 )
{
xil_printf(" - slave register 5 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 7 to slave register 6 word 0\n\r");
SPIIFC_mWriteSlaveReg6(baseaddr, 0, 7);
Reg32Value = SPIIFC_mReadSlaveReg6(baseaddr, 0);
xil_printf(" - read %d from register 6 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 7 )
{
xil_printf(" - slave register 6 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 8 to slave register 7 word 0\n\r");
SPIIFC_mWriteSlaveReg7(baseaddr, 0, 8);
Reg32Value = SPIIFC_mReadSlaveReg7(baseaddr, 0);
xil_printf(" - read %d from register 7 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 8 )
{
xil_printf(" - slave register 7 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 9 to slave register 8 word 0\n\r");
SPIIFC_mWriteSlaveReg8(baseaddr, 0, 9);
Reg32Value = SPIIFC_mReadSlaveReg8(baseaddr, 0);
xil_printf(" - read %d from register 8 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 9 )
{
xil_printf(" - slave register 8 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 10 to slave register 9 word 0\n\r");
SPIIFC_mWriteSlaveReg9(baseaddr, 0, 10);
Reg32Value = SPIIFC_mReadSlaveReg9(baseaddr, 0);
xil_printf(" - read %d from register 9 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 10 )
{
xil_printf(" - slave register 9 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 11 to slave register 10 word 0\n\r");
SPIIFC_mWriteSlaveReg10(baseaddr, 0, 11);
Reg32Value = SPIIFC_mReadSlaveReg10(baseaddr, 0);
xil_printf(" - read %d from register 10 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 11 )
{
xil_printf(" - slave register 10 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 12 to slave register 11 word 0\n\r");
SPIIFC_mWriteSlaveReg11(baseaddr, 0, 12);
Reg32Value = SPIIFC_mReadSlaveReg11(baseaddr, 0);
xil_printf(" - read %d from register 11 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 12 )
{
xil_printf(" - slave register 11 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 13 to slave register 12 word 0\n\r");
SPIIFC_mWriteSlaveReg12(baseaddr, 0, 13);
Reg32Value = SPIIFC_mReadSlaveReg12(baseaddr, 0);
xil_printf(" - read %d from register 12 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 13 )
{
xil_printf(" - slave register 12 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 14 to slave register 13 word 0\n\r");
SPIIFC_mWriteSlaveReg13(baseaddr, 0, 14);
Reg32Value = SPIIFC_mReadSlaveReg13(baseaddr, 0);
xil_printf(" - read %d from register 13 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 14 )
{
xil_printf(" - slave register 13 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 15 to slave register 14 word 0\n\r");
SPIIFC_mWriteSlaveReg14(baseaddr, 0, 15);
Reg32Value = SPIIFC_mReadSlaveReg14(baseaddr, 0);
xil_printf(" - read %d from register 14 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 15 )
{
xil_printf(" - slave register 14 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - write 16 to slave register 15 word 0\n\r");
SPIIFC_mWriteSlaveReg15(baseaddr, 0, 16);
Reg32Value = SPIIFC_mReadSlaveReg15(baseaddr, 0);
xil_printf(" - read %d from register 15 word 0\n\r", Reg32Value);
if ( Reg32Value != (Xuint32) 16 )
{
xil_printf(" - slave register 15 word 0 write/read failed\n\r");
return XST_FAILURE;
}
xil_printf(" - slave register write/read passed\n\n\r");
/*
* Write data to user logic BRAMs and read back
*/
xil_printf("User logic BRAM test...\n\r");
xil_printf(" - local BRAM address is 0x%08x\n\r", LocalBRAM);
xil_printf(" - write pattern to local BRAM and read back\n\r");
for ( Index = 0; Index < 256; Index++ )
{
SPIIFC_mWriteMemory(LocalBRAM+4*Index, 0xDEADBEEF);
Mem32Value = SPIIFC_mReadMemory(LocalBRAM+4*Index);
if ( Mem32Value != 0xDEADBEEF )
{
xil_printf(" - write/read BRAM failed on address 0x%08x\n\r", LocalBRAM+4*Index);
return XST_FAILURE;
}
}
xil_printf(" - write/read BRAM passed\n\n\r");
/*
* Enable all possible interrupts and clear interrupt status register(s)
*/
xil_printf("Interrupt controller test...\n\r");
Reg32Value = SPIIFC_mReadReg(baseaddr, SPIIFC_INTR_IPISR_OFFSET);
xil_printf(" - IP (user logic) interrupt status : 0x%08x\n\r", Reg32Value);
xil_printf(" - clear IP (user logic) interrupt status register\n\r");
SPIIFC_mWriteReg(baseaddr, SPIIFC_INTR_IPISR_OFFSET, Reg32Value);
xil_printf(" - enable all possible interrupt(s)\n\r");
SPIIFC_EnableInterrupt(baseaddr_p);
xil_printf(" - write/read interrupt register passed\n\n\r");
return XST_SUCCESS;
}
-g TdoPin:PULLNONE
-g StartUpClk:JTAGCLK
#add other options here.
setMode -bscan
setCable -p auto
identify
assignfile -p 1 -file implementation/download.bit
program -p 1
quit
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
<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="447" 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" IS_VISIBLE="FALSE" ROW_INDEX="0">
<VARIABLE IS_LABELED="TRUE" NAME="AXI" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
</SET>
<SET CLASS="FILTER" ID="AXIS" IS_VISIBLE="FALSE" 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" 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 CLASS="SUB_FILTER" ID="XIL_MEMORY_CHANNEL" ROW_INDEX="4">
<VARIABLE IS_LABELED="TRUE" NAME="XIL_MEMORY_CHANNEL" 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 HSCROLL="0" VSCROLL="0">
<VARIABLE COL_INDEX="0" COL_WIDTH="485" 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>
\ No newline at end of file
<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="726" 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 ID="spiifc_0" IS_EXPANDED="TRUE"/>
<SET ID="xps_central_dma_0" IS_EXPANDED="TRUE"/>
<STATUS>
<SELECTIONS/>
</STATUS>
<SEQUENCES IS_DEF_SEQUENCES="TRUE">
<VARIABLE ID="microblaze_0" ROW_INDEX="3"/>
<VARIABLE ID="mb_plb" ROW_INDEX="2"/>
<VARIABLE ID="ilmb" ROW_INDEX="1"/>
<VARIABLE ID="dlmb" ROW_INDEX="0"/>
<VARIABLE ID="dlmb_cntlr" ROW_INDEX="5"/>
<VARIABLE ID="ilmb_cntlr" ROW_INDEX="6"/>
<VARIABLE ID="lmb_bram" ROW_INDEX="4"/>
<VARIABLE ID="DIP_Switches_8Bits" ROW_INDEX="10"/>
<VARIABLE ID="LEDs_8Bits" ROW_INDEX="11"/>
<VARIABLE ID="Push_Buttons_5Bits" ROW_INDEX="12"/>
<VARIABLE ID="clock_generator_0" ROW_INDEX="13"/>
<VARIABLE ID="mdm_0" ROW_INDEX="8"/>
<VARIABLE ID="proc_sys_reset_0" ROW_INDEX="14"/>
<VARIABLE ID="spiifc_0" IS_EXPANDED="TRUE" ROW_INDEX="7"/>
<VARIABLE ID="xps_central_dma_0" IS_EXPANDED="TRUE" ROW_INDEX="9"/>
</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="201" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="1" COL_WIDTH="180" 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="413" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
<VARIABLE COL_INDEX="8" COL_WIDTH="100" 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 ID="ExternalPorts" IS_EXPANDED="TRUE"/>
<SET ID="spiifc_0" IS_EXPANDED="TRUE"/>
<STATUS>
<SELECTIONS/>
</STATUS>
<SEQUENCES IS_DEF_SEQUENCES="TRUE">
<VARIABLE ID="ExternalPorts" IS_EXPANDED="TRUE" ROW_INDEX="0"/>
<VARIABLE ID="microblaze_0" ROW_INDEX="4"/>
<VARIABLE ID="mb_plb" ROW_INDEX="3"/>
<VARIABLE ID="ilmb" ROW_INDEX="2"/>
<VARIABLE ID="dlmb" ROW_INDEX="1"/>
<VARIABLE ID="dlmb_cntlr" ROW_INDEX="6"/>
<VARIABLE ID="ilmb_cntlr" ROW_INDEX="7"/>
<VARIABLE ID="lmb_bram" ROW_INDEX="5"/>
<VARIABLE ID="DIP_Switches_8Bits" ROW_INDEX="11"/>
<VARIABLE ID="LEDs_8Bits" ROW_INDEX="12"/>
<VARIABLE ID="Push_Buttons_5Bits" ROW_INDEX="13"/>
<VARIABLE ID="clock_generator_0" ROW_INDEX="14"/>
<VARIABLE ID="mdm_0" ROW_INDEX="9"/>
<VARIABLE ID="proc_sys_reset_0" ROW_INDEX="15"/>
<VARIABLE ID="spiifc_0" IS_EXPANDED="TRUE" ROW_INDEX="8"/>
<VARIABLE ID="xps_central_dma_0" ROW_INDEX="10"/>
</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="894" IS_VISIBLE="TRUE" VIEWDISP="Lock" VIEWTYPE="HEADER"/>
</HEADERS>
<SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,630,180" VERSION="0"/>
<SET ID="microblaze_0" IS_EXPANDED="TRUE"/>
<STATUS>
<SELECTIONS/>
</STATUS>
<SEQUENCES IS_DEF_SEQUENCES="TRUE">
<VARIABLE ID="microblaze_0" IS_EXPANDED="TRUE" ROW_INDEX="0"/>
</SEQUENCES>
</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>
\ No newline at end of file
<HTML><HEAD><TITLE>Xilinx Design Summary</TITLE></HEAD>
<BODY TEXT='#000000' BGCOLOR='#FFFFFF' LINK='#0000EE' VLINK='#551A8B' ALINK='#FF0000'>
<TABLE BORDER CELLSPACING=0 CELLPADDING=3 WIDTH='100%'>
<TR ALIGN=CENTER BGCOLOR='#99CCFF'>
<TD ALIGN=CENTER COLSPAN='4'><B>system Project Status</B></TD></TR>
<TR ALIGN=LEFT>
<TD BGCOLOR='#FFFF99'><B>Project File:</B></TD>
<TD>system.xmp</TD>
<TD BGCOLOR='#FFFF99'><B>Implementation State:</B></TD>
<TD>New</TD>
</TR>
<TR ALIGN=LEFT>
<TD BGCOLOR='#FFFF99'><B>Module Name:</B></TD>
<TD>system</TD>
<TD BGCOLOR='#FFFF99'><UL><LI><B>Errors:</B></LI></UL></TD>
<TD>&nbsp;</TD>
</TR>
<TR ALIGN=LEFT>
<TD BGCOLOR='#FFFF99'><B>Product Version:</B></TD><TD>EDK 13.2</TD>
<TD BGCOLOR='#FFFF99'><UL><LI><B>Warnings:</B></LI></UL></TD>
<TD>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<BR><TABLE BORDER CELLSPACING=0 CELLPADDING=3 WIDTH='100%'>
<TR ALIGN=CENTER BGCOLOR='#99CCFF'><TD ALIGN=CENTER COLSPAN='5'><B>XPS Reports</B></TD><TD ALIGN=RIGHT WIDTH='10%'COLSPAN=1> <A HREF_DISABLED="?&ExpandedTable=EDKReports"><B>[-]</B></a></TD></TR>
<TR BGCOLOR='#FFFF99'><TD><B>Report Name</B></TD><TD><B>Generated</B></TD>
<TD ALIGN=LEFT><B>Errors</B></TD><TD ALIGN=LEFT><B>Warnings</B></TD><TD ALIGN=LEFT COLSPAN='2'><B>Infos</B></TD></TR>
<TR ALIGN=LEFT><TD>Platgen Log File</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD>Simgen Log File</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD>BitInit Log File</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD><A HREF_DISABLED='C:/Users/mjlyons/workspace/vSPI/projnav/xps\system.log'>System Log File</A></TD><TD>Thu Mar 15 15:58:44 2012</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
</TABLE>
&nbsp;<BR><TABLE BORDER CELLSPACING=0 CELLPADDING=3 WIDTH='100%'>
<TR ALIGN=CENTER BGCOLOR='#99CCFF'><TD ALIGN=CENTER COLSPAN='6'><B>Detailed Reports</B></TD><TD ALIGN=RIGHT WIDTH='10%'COLSPAN=1> <A HREF_DISABLED="?&ExpandedTable=DetailedReports"><B>[-]</B></a></TD></TR>
<TR BGCOLOR='#FFFF99'><TD><B>Report Name</B></TD><TD><B>Status</B></TD><TD><B>Generated</B></TD>
<TD ALIGN=LEFT><B>Errors</B></TD><TD ALIGN=LEFT><B>Warnings</B></TD><TD ALIGN=LEFT COLSPAN='2'><B>Infos</B></TD></TR>
<TR ALIGN=LEFT><TD>Translation Report</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD>Map Report</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD>Place and Route Report</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD>Post-PAR Static Timing Report</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
<TR ALIGN=LEFT><TD>Bitgen Report</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD COLSPAN='2'>&nbsp;</TD></TR>
</TABLE>
&nbsp;<BR><TABLE BORDER CELLSPACING=0 CELLPADDING=3 WIDTH='100%'>
<TR ALIGN=CENTER BGCOLOR='#99CCFF'><TD ALIGN=CENTER COLSPAN='3'><B>Secondary Reports</B></TD><TD ALIGN=RIGHT WIDTH='10%'COLSPAN=1> <A HREF_DISABLED="?&ExpandedTable=SecondaryReports"><B>[-]</B></a></TD></TR>
<TR BGCOLOR='#FFFF99'><TD><B>Report Name</B></TD><TD><B>Status</B></TD><TD COLSPAN='2'><B>Generated</B></TD></TR>
</TABLE>
<br><center><b>Date Generated:</b> 03/15/2012 - 15:58:44</center>
</BODY></HTML>
\ No newline at end of file
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\proc_common_pkg.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\or_muxcy.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\family_support.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\pselect_f.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\or_gate128.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\ipif_pkg.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\proc_common_v3_00_a\hdl\vhdl\counter_f.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\flex_addr_cntr.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\wr_buffer.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\plb_address_decoder.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\burst_support.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\be_reset_gen.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\addr_reg_cntr_brst_flex.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\plb_slave_attachment.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\data_mirror_128.vhd"
verilog spiifc_v1_00_a "C:\Users\mjlyons\workspace\vSPI\src\spi_base\spiifc.v"
verilog spiifc_v1_00_a "C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\buffermem.v"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\hdl\vhdl\plbv46_slave_burst.vhd"
vhdl interrupt_control_v2_01_a "C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\interrupt_control_v2_01_a\hdl\vhdl\interrupt_control.vhd"
verilog spiifc_v1_00_a "C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\hdl\verilog\user_logic.v"
vhdl spiifc_v1_00_a "C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\hdl\vhdl\spiifc.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/proc_common_pkg.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/ipif_pkg.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_muxcy.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_gate128.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/family_support.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/pselect_f.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/counter_f.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/flex_addr_cntr.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/addr_reg_cntr_brst_flex.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_address_decoder.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/burst_support.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/wr_buffer.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/be_reset_gen.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_slave_attachment.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/data_mirror_128.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plbv46_slave_burst.vhd"
vhdl interrupt_control_v2_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/interrupt_control_v2_01_a/hdl/vhdl/interrupt_control.vhd"
verilog spiifc_v1_00_a "../hdl/verilog/user_logic.v"
vhdl spiifc_v1_00_a "../hdl/vhdl/spiifc.vhd"
##############################################################################
## Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores/spiifc_v1_00_a/data/spiifc_v2_1_0.bbd
## Description: Black Box Definition
## Date: Wed Mar 14 16:37:23 2012 (by Create and Import Peripheral Wizard)
##############################################################################
Files
################################################################################
buffermem.ngc
###################################################################
##
## Name : spiifc
## Desc : Microprocessor Peripheral Description
## : Automatically generated by PsfUtility
##
###################################################################
BEGIN spiifc
## Peripheral Options
OPTION IPTYPE = PERIPHERAL
OPTION IMP_NETLIST = TRUE
OPTION HDL = MIXED
OPTION IP_GROUP = MICROBLAZE:PPC:USER
OPTION STYLE = MIX
OPTION RUN_NGCBUILD = TRUE
## Bus Interfaces
BUS_INTERFACE BUS = SPLB, BUS_STD = PLBV46, BUS_TYPE = SLAVE
## Generics for VHDL or Parameters for Verilog
PARAMETER C_BASEADDR = 0xffffffff, DT = std_logic_vector, PAIR = C_HIGHADDR, ADDRESS = BASE, BUS = SPLB
PARAMETER C_HIGHADDR = 0x00000000, DT = std_logic_vector, PAIR = C_BASEADDR, ADDRESS = HIGH, BUS = SPLB
PARAMETER C_SPLB_AWIDTH = 32, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_DWIDTH = 128, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_NUM_MASTERS = 8, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_MID_WIDTH = 3, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_NATIVE_DWIDTH = 32, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_P2P = 0, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_SUPPORT_BURSTS = 1, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_SMALLEST_MASTER = 32, DT = INTEGER, BUS = SPLB
PARAMETER C_SPLB_CLK_PERIOD_PS = 10000, DT = INTEGER, BUS = SPLB
PARAMETER C_INCLUDE_DPHASE_TIMER = 1, DT = INTEGER
PARAMETER C_FAMILY = virtex6, DT = STRING
PARAMETER C_MEM0_BASEADDR = 0xffffffff, DT = std_logic_vector, PAIR = C_MEM0_HIGHADDR, ADDRESS = BASE, BUS = SPLB, ADDR_TYPE = MEMORY
PARAMETER C_MEM0_HIGHADDR = 0x00000000, DT = std_logic_vector, PAIR = C_MEM0_BASEADDR, ADDRESS = HIGH, BUS = SPLB, ADDR_TYPE = MEMORY
PARAMETER C_MEM1_BASEADDR = 0xffffffff, DT = std_logic_vector, PAIR = C_MEM1_HIGHADDR, ADDRESS = BASE, BUS = SPLB, ADDR_TYPE = MEMORY
PARAMETER C_MEM1_HIGHADDR = 0x00000000, DT = std_logic_vector, PAIR = C_MEM1_BASEADDR, ADDRESS = HIGH, BUS = SPLB, ADDR_TYPE = MEMORY
## Ports
PORT SPI_CLK = "", DIR = I
PORT SPI_MOSI = "", DIR = I
PORT SPI_MISO = "", DIR = O
PORT SPI_SS = "", DIR = I
PORT SPLB_Clk = "", DIR = I, SIGIS = CLK, BUS = SPLB
PORT SPLB_Rst = SPLB_Rst, DIR = I, SIGIS = RST, BUS = SPLB
PORT PLB_ABus = PLB_ABus, DIR = I, VEC = [0:31], BUS = SPLB
PORT PLB_UABus = PLB_UABus, DIR = I, VEC = [0:31], BUS = SPLB
PORT PLB_PAValid = PLB_PAValid, DIR = I, BUS = SPLB
PORT PLB_SAValid = PLB_SAValid, DIR = I, BUS = SPLB
PORT PLB_rdPrim = PLB_rdPrim, DIR = I, BUS = SPLB
PORT PLB_wrPrim = PLB_wrPrim, DIR = I, BUS = SPLB
PORT PLB_masterID = PLB_masterID, DIR = I, VEC = [0:(C_SPLB_MID_WIDTH-1)], BUS = SPLB
PORT PLB_abort = PLB_abort, DIR = I, BUS = SPLB
PORT PLB_busLock = PLB_busLock, DIR = I, BUS = SPLB
PORT PLB_RNW = PLB_RNW, DIR = I, BUS = SPLB
PORT PLB_BE = PLB_BE, DIR = I, VEC = [0:((C_SPLB_DWIDTH/8)-1)], BUS = SPLB
PORT PLB_MSize = PLB_MSize, DIR = I, VEC = [0:1], BUS = SPLB
PORT PLB_size = PLB_size, DIR = I, VEC = [0:3], BUS = SPLB
PORT PLB_type = PLB_type, DIR = I, VEC = [0:2], BUS = SPLB
PORT PLB_lockErr = PLB_lockErr, DIR = I, BUS = SPLB
PORT PLB_wrDBus = PLB_wrDBus, DIR = I, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
PORT PLB_wrBurst = PLB_wrBurst, DIR = I, BUS = SPLB
PORT PLB_rdBurst = PLB_rdBurst, DIR = I, BUS = SPLB
PORT PLB_wrPendReq = PLB_wrPendReq, DIR = I, BUS = SPLB
PORT PLB_rdPendReq = PLB_rdPendReq, DIR = I, BUS = SPLB
PORT PLB_wrPendPri = PLB_wrPendPri, DIR = I, VEC = [0:1], BUS = SPLB
PORT PLB_rdPendPri = PLB_rdPendPri, DIR = I, VEC = [0:1], BUS = SPLB
PORT PLB_reqPri = PLB_reqPri, DIR = I, VEC = [0:1], BUS = SPLB
PORT PLB_TAttribute = PLB_TAttribute, DIR = I, VEC = [0:15], BUS = SPLB
PORT Sl_addrAck = Sl_addrAck, DIR = O, BUS = SPLB
PORT Sl_SSize = Sl_SSize, DIR = O, VEC = [0:1], BUS = SPLB
PORT Sl_wait = Sl_wait, DIR = O, BUS = SPLB
PORT Sl_rearbitrate = Sl_rearbitrate, DIR = O, BUS = SPLB
PORT Sl_wrDAck = Sl_wrDAck, DIR = O, BUS = SPLB
PORT Sl_wrComp = Sl_wrComp, DIR = O, BUS = SPLB
PORT Sl_wrBTerm = Sl_wrBTerm, DIR = O, BUS = SPLB
PORT Sl_rdDBus = Sl_rdDBus, DIR = O, VEC = [0:(C_SPLB_DWIDTH-1)], BUS = SPLB
PORT Sl_rdWdAddr = Sl_rdWdAddr, DIR = O, VEC = [0:3], BUS = SPLB
PORT Sl_rdDAck = Sl_rdDAck, DIR = O, BUS = SPLB
PORT Sl_rdComp = Sl_rdComp, DIR = O, BUS = SPLB
PORT Sl_rdBTerm = Sl_rdBTerm, DIR = O, BUS = SPLB
PORT Sl_MBusy = Sl_MBusy, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
PORT Sl_MWrErr = Sl_MWrErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
PORT Sl_MRdErr = Sl_MRdErr, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
PORT Sl_MIRQ = Sl_MIRQ, DIR = O, VEC = [0:(C_SPLB_NUM_MASTERS-1)], BUS = SPLB
PORT IP2INTC_Irpt = "", DIR = O, SIGIS = INTERRUPT, SENSITIVITY = LEVEL_HIGH
END
##############################################################################
## Filename: C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores/spiifc_v1_00_a/data/spiifc_v2_1_0.pao
## Description: Peripheral Analysis Order
## Date: Wed Mar 14 16:37:23 2012 (by Create and Import Peripheral Wizard)
##############################################################################
lib proc_common_v3_00_a proc_common_pkg vhdl
lib proc_common_v3_00_a or_muxcy vhdl
lib proc_common_v3_00_a family_support vhdl
lib proc_common_v3_00_a pselect_f vhdl
lib proc_common_v3_00_a or_gate128 vhdl
lib proc_common_v3_00_a ipif_pkg vhdl
lib proc_common_v3_00_a counter_f vhdl
lib plbv46_slave_burst_v1_01_a flex_addr_cntr vhdl
lib plbv46_slave_burst_v1_01_a wr_buffer vhdl
lib plbv46_slave_burst_v1_01_a plb_address_decoder vhdl
lib plbv46_slave_burst_v1_01_a burst_support vhdl
lib plbv46_slave_burst_v1_01_a be_reset_gen vhdl
lib plbv46_slave_burst_v1_01_a addr_reg_cntr_brst_flex vhdl
lib plbv46_slave_burst_v1_01_a plb_slave_attachment vhdl
lib plbv46_slave_burst_v1_01_a data_mirror_128 vhdl
lib spiifc_v1_00_a spiifc verilog
lib spiifc_v1_00_a buffermem verilog
lib plbv46_slave_burst_v1_01_a plbv46_slave_burst vhdl
lib interrupt_control_v2_01_a interrupt_control vhdl
lib spiifc_v1_00_a user_logic verilog
lib spiifc_v1_00_a spiifc vhdl
TABLE OF CONTENTS
1) Peripheral Summary
2) Description of Generated Files
3) Description of Used IPIC Signals
4) Description of Top Level Generics
================================================================================
* 1) Peripheral Summary *
================================================================================
Peripheral Summary:
XPS project / EDK repository : C:\Users\mjlyons\workspace\vSPI\projnav\xps
logical library name : spiifc_v1_00_a
top name : spiifc
version : 1.00.a
type : PLB (v4.6) slave
features : slave attachment
interrupt control
user s/w registers
user memory spaces
Address Block for User Logic and IPIF Predefined Services
user logic slave space : C_BASEADDR + 0x00000000
: C_BASEADDR + 0x000000FF
interrupt control space : C_BASEADDR + 0x00000100
: C_BASEADDR + 0x000001FF
User logic memory space 0 : C_MEM0_BASEADDR
: C_MEM0_HIGHADDR
User logic memory space 1 : C_MEM1_BASEADDR
: C_MEM1_HIGHADDR
================================================================================
* 2) Description of Generated Files *
================================================================================
- HDL source file(s)
hdl/vhdl/spiifc.vhd
This is the template file for your peripheral's top design entity. It
configures and instantiates the corresponding design units in the way you
indicated in the wizard GUI and hooks it up to the stub user logic where
the actual functionalites should get implemented. You are not expected to
modify this template file except certain marked places for adding user
specific generics and ports.
verilog/user_logic.v
This is the template file for the stub user logic design entity, either in
VHDL or Verilog, where the actual functionalities should get implemented.
Some sample code snippet may be provided for demonstration purpose.
- XPS interface file(s)
data/spiifc_v2_1_0.mpd
This Microprocessor Peripheral Description file contains information of the
interface of your peripheral, so that other EDK tools can recognize your
peripheral.
data/spiifc_v2_1_0.pao
This Peripheral Analysis Order file defines the analysis order of all the HDL
source files that are used to compile your peripheral.
- ISE project file(s)
devl/projnav/spiifc.ise
This is the ProjNavigator project file. It sets up the needed logical
libraries and dependent library files for you to help you develop your
peripheral using ProjNavigator.
devl/projnav/spiifc.cli
This is the TCL command line file used to generate the .ise file.
- XST synthesis file(s)
devl/synthesis/spiifc_xst.scr
This is the XST synthesis script file to compile your peripheral.
Note: you may want to modify the device part option for your target.
devl/synthesis/spiifc_xst.prj
This is the XST synthesis project file used by the above script file to
compile your peripheral.
- Driver source file(s)
src/spiifc.h
This is the software driver header template file, which contains address offset of
software addressable registers in your peripheral, as well as some common masks and
simple register access macros or function declaration.
src/spiifc.c
This is the software driver source template file, to define all applicable driver
functions.
src/spiifc_selftest.c
This is the software driver self test example file, which contain self test example
code to test various hardware features of your peripheral.
src/Makefile
This is the software driver makefile to compile drivers.
- Driver interface file(s)
-user needs to add these to repositories path in SDK (Xilinx Tools-->Repositories)
data/spiifc_v2_1_0.mdd
This is the Microprocessor Driver Definition file.
data/spiifc_v2_1_0.tcl
This is the Microprocessor Driver Command file.
- Other misc file(s)
devl/ipwiz.opt
This is the option setting file for the wizard batch mode, which should
generate the same result as the wizard GUI mode.
devl/README.txt
This README file for your peripheral.
devl/ipwiz.log
This is the log file by operating on this wizard.
================================================================================
* 3) Description of Used IPIC Signals *
================================================================================
For more information (usage, timing diagrams, etc.) regarding the IPIC signals
used in the templates, please refer to the following specifications:
proc_common_v3_00_a
No documentation for this library
plbv46_slave_burst_v1_01_a
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\doc\plbv46_slave_burst.pdf
interrupt_control_v2_01_a
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\interrupt_control_v2_01_a\doc\interrupt_control.pdf
Bus2IP_Clk
Synchronization clock provided to the user logic. All IPIC signals are
synchronous to this clock. It is identical to the input <bus>_Clk signal of
the peripheral. No additional buffering is provided on the clock; it is
passed through as is.
Bus2IP_Reset
Active high reset used by the user logic. It is asserted whenever the
<bus>_Rst signal asserts or whenever there is a software-programmed reset
(if the soft reset block is included).
Bus2IP_Addr
Address bus to the user logic. It indicates the address of the requested
read or write operation. It can be used for additional address decoding or
as input to addressable memory devices.
Bus2IP_CS
Active high chip select bus. Assertion of a chip select indicates an active
transaction request to the chip select's target address space. This is
typically used for user logic memory space selection.
Bus2IP_RNW
Input signal to the user logic. It indicates the sense of a requested
operation with the user logic. High is a read and low is a write. It is
valid whenever at least one of the Bus2IP_CS bits is active.
Bus2IP_Data
Write data bus to the user logic. Write data is accepted by the user logic
during a write operation by assertion of the write acknowledgement signal
and the rising edge of the Bus2IP_Clk.
Bus2IP_BE
Byte Enable qualifiers for the requested read or write operation to the user
logic. A bit in the Bus2IP_BE set to '1' indicates that the associated byte
lane contains valid data. For example, if Bus2IP_BE = 0011, this indicates
that byte lanes 2 and 3 contain valid data.
Bus2IP_RdCE
Active high chip enable bus to the user logic. These chip enables are only
asserted during active read transaction requests with the target address
space and in conjunction with the corresponding sub-address within the
space. These are typically used for user logic readable registers selection.
Bus2IP_WrCE
Active high chip enable bus to the user logic. These chip enables are
asserted only during active write transaction requests with the target
address space and in conjunction with the corresponding sub-address within
the space. Typically used for user logic writable registers selection.
Bus2IP_Burst
Active high signal indicating that the active read or write operation with
the user logic is utilizing bursting protocol. This signal is asserted at
the initiation of a burst transaction with the user logic and de-asserted at
the completion of the second to last data beat of the burst data transfer.
Bus2IP_BurstLength
This value is an indication of the number of bytes being requested for
transfer and is valid when the cycle is of burst type Bus2IP_CS is active.
Bus2IP_RdReq
Active high signal indicating the initiation of a read operation with the
user logic. It is asserted for one Bus2IP_Clk during single data beat
transactions and remains high to completion on burst read operations.
Bus2IP_WrReq
Active high signal indicating the initiation of a write operation with the
user logic. It is asserted for one Bus2IP_Clk during single data beat
transactions and remains high to completion on burst write operations.
IP2Bus_AddrAck
Active high signal that advances the address counter and request state
during multiple data beat transfers, i.e. bursting.
IP2Bus_Data
Output read data bus from the user logic; data is qualified with the
assertion of IP2Bus_RdAck signal and the rising edge of the Bus2IP_Clk.
IP2Bus_RdAck
Active high read data qualifier providing the read acknowledgement from the
user logic. Read data on the IP2Bus_Data bus is deemed valid at the rising
edge of the Bus2IP_Clk and IP2Bus_RdAck asserted high by the user logic. For
immediate acknowledgement (such as for a register read), this signal can be
tied to '1'. Wait states can be inserted in the transaction by delaying the
assertion of the acknowledgement.
IP2Bus_WrAck
Active high write data qualifier providing the write acknowledgement from
the user logic. Write data on the Bus2IP_Data bus is deemed accepted by the
user logic at the rising edge of the Bus2IP_Clk and IP2Bus_WrAck asserted
high by the user logic. For immediate acknowledgement (such as for a
register write), this signal can be tied to '1'. Wait states can be inserted
in the transaction by delaying the assertion of the acknowledgement.
IP2Bus_Error
Active high signal indicating the user logic has encountered an error with
the requested operation. It is asserted in conjunction with the read/write
acknowledgement signal(s).
IP2Bus_IntrEvent
An output from the user logic to the IPIF that consists of interrupt event
signals to be detected and latched inside the IPIF.
================================================================================
* 4) Description of Top Level Generics *
================================================================================
C_BASEADDR/C_HIGHADDR
These two generics are used to define the memory mapped address space for
the peripheral registers, including Soft Reset register, Interrupt Source
Controller registers, Read/Write FIFO control/data registers, user logic
software accessible registers and etc., but excluding those user logic
memory spaces if ever existed. When instantiation, the address space
size determined by these two generics must be a power of 2 (e.g. 2^k =
C_HIGHADDR - C_BASEADDR + 1), a factor of C_BASEADDR and larger than the
minimum size as indicated in the template.
C_SPLB_AWIDTH
This is the slave interface address bus width for Processor Local Bus
version 4.6 (PLBv46). Value can be assigned automatically by EDK
tooling during system creation.
C_SPLB_DWIDTH
This is the slave interface data bus width for Processor Local Bus
version 4.6 (PLBv46). Value can be assigned automatically by EDK
tooling during system creation.
C_SPLB_NUM_MASTERS
This indicates to the slave interface the number of PLBv46 masters
present. Value can be assigned automatically by EDK tooling during
system creation.
C_SPLB_MID_WIDTH
This indicates to the slave interface the number of bits required
for the PLB_masterID input bus. It is an integer value equal to
log2(C_SPLB_NUM_MASTERS). Value will be assigned automatically by
EDK tooling during system creation.
C_SPLB_NATIVE_DWIDTH
This indicates to the slave interface the native bit width of the
internal data bus of the peripheral. Some peripheral will require
the value of this parameter to be fixed, while others might have
selectable native data widths.
C_SPLB_P2P
This indicates to the slave interface when it is exclusively attached
to a PLBv46 bus via a Point to Point interconnect scheme. In this
scenario, the slave interface may be able to reduce resource utilization
by eliminating address decode function and modifying interface behavior
to allow for a reduction in latency.
C_SPLB_SUPPORT_BURSTS
This indicates to the associated PLBv46 bus that this slave interface
support burst transfers to improve performance.
C_SPLB_SMALLEST_MASTER
This indicates the smallest native data width of any master on the
corresponding PLBv46 bus that may access the slave interface. It allows
optimizations within the slave interface logic if narrower masters don't
have to be supported for that application.
C_SPLB_CLK_PERIOD_PS
This is the period of the PLBv46 bus clock (in picoseconds) for the
corresponding PLBv46 slave interface attachment. It has been defined
for use by peripheral that needs to know the bus clock rate to improve
certain functions such as internal timers.
C_INCLUDE_DPHASE_TIMER
This indicates if the data phase timer is used or not. The value of
0 will exclude the timer. The value of 1 includes the timer.
If C_INCLUDE_DPHASE_TIMER = 1 and after 128 SPLB_Clk cycles, as
measured from the assertion of Sl_AddrAck, the User IP does not
respond with either an IP2Bus_RdAck or IP2Bus_WrAck the
plbv46_slave_single will de-assert the User IP cycle request
signals, Bus2IP_CS and Bus2IP_RdCE or Bus2IP_WrCE, and will assert
Sl_rdDAck with Sl_rdDBus=zero for a read cycle or Sl_wrDAck for
a write cycle. This will gracefully terminate the cycle. Note
that the requesting master will have no knowledge that the data
phase of the PLB request was terminated in this manner.
C_FAMILY
This is to set the target FPGA architecture, s.t. virtex6, etc.
C_MEMn_BASEADDR/C_MEMn_HIGHADDR (n = 0, 1, 2, etc.)
These two generics are used to define the memory mapped address space for
user logic memory space n, which are typically used in peripherals like
memory controllers, bridges, that need to access memory blocks other
than local register space. When instantiation, the address space size
determined by these two generics should be a power of 2 (e.g. 2^k =
C_MEMn_HIGHADDR - C_MEMn_BASEADDR + 1) and a factor of C_MEMn_BASEADDR.
================================================================================
* 5) Location to documentation of dependent libraries *
* *
* In general, the documentation is located under: *
* $XILINX_EDK/hw/XilinxProcessorIPLib/pcores/$libName/doc *
* *
================================================================================
proc_common_v3_00_a
No documentation for this library
plbv46_slave_burst_v1_01_a
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\plbv46_slave_burst_v1_01_a\doc\plbv46_slave_burst.pdf
interrupt_control_v2_01_a
C:\Users\mjlyons\workspace\vSPI\projnav\xps\C:\Xilinx\13.2\ISE_DS\EDK\hw\XilinxProcessorIPLib\pcores\interrupt_control_v2_01_a\doc\interrupt_control.pdf
CipWiz::SetVersion "13.2";
CipWiz::SetFlow "CREATE";
CipWiz::SetParameter "ProjectDir" "C:\Users\mjlyons\workspace\vSPI\projnav\xps";
CipWiz::SetParameter "IpName" "spiifc";
CipWiz::SetParameter "IpVersion" "1.00.a";
CipWiz::SetParameter "HdlLanguage" "2";
CipWiz::SetParameter "BusType" "64";
CipWiz::SetParameter "IncludeIseFile" "TRUE";
CipWiz::SetParameter "IncludeXpsFile" "TRUE";
CipWiz::SetParameter "IncludeSoftwareDriverFile" "TRUE";
CipWiz::SetParameter "IncludeBFMSimulationFile" "FALSE";
CipWiz::SetParameter "IncludeSlaveAttachmentSupport" "TRUE";
CipWiz::SetParameter "IncludeMasterAttachmentSupport" "FALSE";
CipWiz::SetParameter "IncludeMirResetRegister" "FALSE";
CipWiz::SetParameter "IncludeFifoSupport" "FALSE";
CipWiz::SetParameter "IncludeInterruptSupport" "TRUE";
CipWiz::SetParameter "IncludeDMASupport" "FALSE";
CipWiz::SetParameter "IncludeBurstSupport" "FALSE";
CipWiz::SetParameter "IncludeUserRegisterSupport" "TRUE";
CipWiz::SetParameter "IncludeUserMasterSupport" "FALSE";
CipWiz::SetParameter "IncludeUserMemorySupport" "TRUE";
CipWiz::SetParameter "UseSlaveBurst" "TRUE";
CipWiz::SetParameter "UseMasterBurst" "FALSE";
CipWiz::SetParameter "UseReadFifo" "FALSE";
CipWiz::SetParameter "UseWriteFifo" "FALSE";
CipWiz::SetParameter "UseReadFifoPacketMode" "FALSE";
CipWiz::SetParameter "UseWriteFifoPacketMode" "FALSE";
CipWiz::SetParameter "UseReadFifoVacancyCalculation" "FALSE";
CipWiz::SetParameter "UseWriteFifoVacancyCalculation" "FALSE";
CipWiz::SetParameter "WriteFifoDataWidth" "0";
CipWiz::SetParameter "WriteFifoDepth" "0";
CipWiz::SetParameter "ReadFifoDataWidth" "0";
CipWiz::SetParameter "ReadFifoDepth" "0";
CipWiz::SetParameter "UseDeviceISC" "FALSE";
CipWiz::SetParameter "UseDevicePriorityEncoder" "FALSE";
CipWiz::SetParameter "NumberOfInterrupt" "1";
CipWiz::SetParameter "TypeOfInterrupt" "1";
CipWiz::SetParameter "TypeOfDMA" "0";
CipWiz::SetParameter "UseFastTransferProtocol" "FALSE";
CipWiz::SetParameter "BurstMaxSize" "0";
CipWiz::SetParameter "BurstPageSize" "0";
CipWiz::SetParameter "IncludeDPhaseTimer" "TRUE";
CipWiz::SetParameter "SlaveSideNativeDataWidth" "32";
CipWiz::SetParameter "SlaveBurstWriteBufferDepth" "16";
CipWiz::SetParameter "MasterSideNativeDataWidth" "0";
CipWiz::SetParameter "AXIMasterMaxBurstSize" "0";
CipWiz::SetParameter "AXIMasterWidthOfPort" "0";
CipWiz::SetParameter "AXIMasterAddrPipelineDepth" "0";
CipWiz::SetParameter "NumberOfUserRegister" "16";
CipWiz::SetParameter "UserRegisterDataWidth" "0";
CipWiz::SetParameter "WriteMode" "0";
CipWiz::SetParameter "HasInputFSL" "0";
CipWiz::SetParameter "HasOutputFSL" "0";
CipWiz::SetParameter "TotalInputData" "0";
CipWiz::SetParameter "TotalOutputData" "0";
CipWiz::SetParameter "NumOfInputArgs" "0";
CipWiz::SetParameter "NumOfOutputArgs" "0";
CipWiz::SetParameter "NumberOfUserMemoryBank" "2";
CipWiz::SetParameter "UserMemoryBankDataWidth" "0";
CipWiz::SetParameter "IpicSelectedPortNames" "Bus2IP_Clk|Bus2IP_Reset|Bus2IP_Addr|Bus2IP_CS|Bus2IP_RNW|Bus2IP_Data|Bus2IP_BE|Bus2IP_RdCE|Bus2IP_WrCE|Bus2IP_Burst|Bus2IP_BurstLength|Bus2IP_RdReq|Bus2IP_WrReq|IP2Bus_AddrAck|IP2Bus_Data|IP2Bus_RdAck|IP2Bus_WrAck|IP2Bus_Error|IP2Bus_IntrEvent|";
CipWiz::SetParameter "UserLogicModuleName" "0";
CipWiz::SetParameter "TypeOfUserLogicSource" "user_logic";
-batch
-create spiifc
-ver 1.00.a
-dir "C:\Users\mjlyons\workspace\vSPI\projnav\xps"
-lang verilog
-bus plbv46 s
-burst s 32
-isc 1
-intrn 1 1
-reg 16
-mem 2
-wrbuf 16
-xps
-ise
-driver
<?xml version="1.0" encoding="UTF-8"?>
<!-- IMPORTANT: This is an internal file that has been generated
by the Xilinx ISE software. Any direct editing or
changes made to this file may result in unpredictable
behavior or data corruption. It is strongly advised that
users do not edit the contents of this file. -->
<messages>
</messages>
-intstyle "ise" -incremental -lib "unisims_ver" -lib "unimacro_ver" -lib "xilinxcorelib_ver" -lib "secureip" -o "C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_writereg_tb_isim_beh.exe" -prj "C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_writereg_tb_beh.prj" "work.spiifc_writereg_tb" "work.glbl"
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<b>
<xsl:text>Current iMPACT Usage Statistics.</xsl:text>
<br></br>
<xsl:text>Copyright (c) 1995-2010 Xilinx, Inc. All rights reserved.</xsl:text>
</b>
<br></br>
<br></br>
<xsl:text>This page displays the current iMPACT device usage statistics that will be sent to Xilinx using WebTalk.</xsl:text>
<table width = "100%" border="1" CELLSPACING="0" cols="50% 50%">
<xsl:for-each select="document/application/section">
<tr>
<th COLSPAN="2" BGCOLOR="#99CCFF"><xsl:value-of select="@name"/></th>
</tr>
<xsl:for-each select="property">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@value"/></td>
</tr>
</xsl:for-each>
<xsl:for-each select="item">
<tr>
<td COLSPAN="2" BGCOLOR="#FFFF99"><b><xsl:value-of select="@name"/></b></td>
</tr>
<xsl:value-of select="@value"/>
<xsl:for-each select="property">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@value"/>&#x20;</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
<!--
<xsl:if test="position() != last()"> <h1><xsl:text> </xsl:text></h1></xsl:if>
-->
INTSTYLE=impact
INFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\impact.xsl
OUTFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\impact.xsl
FAMILY=Single
PART=Single
WORKINGDIR=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav
LICENSE=iMPACT
USER_INFO=iMPACT
<?xml version="1.0" encoding="UTF-8"?>
<!-- IMPORTANT: This is an internal file that has been generated
by the Xilinx ISE software. Any direct editing or
changes made to this file may result in unpredictable
behavior or data corruption. It is strongly advised that
users do not edit the contents of this file. -->
<messages>
<msg type="info" file="sim" num="0" delta="new" >Generating component instance &apos;<arg fmt="%s" index="1">spiloopmem</arg>&apos; of &apos;<arg fmt="%s" index="2">xilinx.com:ip:blk_mem_gen:6.2</arg>&apos; from &apos;<arg fmt="%s" index="3">C:\Xilinx\13.2\ISE_DS\ISE\coregen\ip\xilinx\primary\com\xilinx\ip\blk_mem_gen_v6_2\component.xml</arg>&apos;.
</msg>
</messages>
<?xml version="1.0" encoding="UTF-8"?>
<!-- IMPORTANT: This is an internal file that has been generated -->
<!-- by the Xilinx ISE software. Any direct editing or -->
<!-- changes made to this file may result in unpredictable -->
<!-- behavior or data corruption. It is strongly advised that -->
<!-- users do not edit the contents of this file. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
<messages>
<msg type="info" file="ProjectMgmt" num="1769" ><arg fmt="%s" index="1">Analyzing Verilog file \&quot;C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/spiloopmem.v\&quot; into library work</arg>
</msg>
</messages>
Core name: Xilinx LogiCORE Block Memory Generator
Version: 6.2
Release Date: June 22, 2011
================================================================================
This document contains the following sections:
1. Introduction
2. New Features
3. Supported Devices
4. Resolved Issues
5. Known Issues
6. Technical Support
7. Core Release History
8. Legal Disclaimer
================================================================================
1. INTRODUCTION
For installation instructions for this release, please go to:
http://www.xilinx.com/ipcenter/coregen/ip_update_install_instructions.htm
For system requirements:
http://www.xilinx.com/ipcenter/coregen/ip_update_system_requirements.htm
This file contains release notes for the Xilinx LogiCORE IP Block Memory Generator v6.2
solution. For the latest core updates, see the product page at:
http://www.xilinx.com/products/ipcenter/Block_Memory_Generator.htm
2. NEW FEATURES
- ISE 13.2 software support
- Virtex-7L, Kintex-7L, Artix-7* and Zynq-7000* device support
3. SUPPORTED DEVICES
The following device families are supported by the core for this release.
Zynq-7000*
Virtex-7
Virtex-7 XT (7vx485t)
Virtex-7 -2L
Kintex-7
Kintex-7 -2L
Artix-7*
Virtex-6 XC CXT/LXT/SXT/HXT
Virtex-6 XQ LXT/SXT
Virtex-6 -1L XQ LXT/SXT
Spartan-6 XC LX/LXT
Spartan-6 XA
Spartan-6 XQ LX/LXT
Spartan-6 -1L XQ LX
Virtex-5 XC LX/LXT/SXT/TXT/FXT
Virtex-5 XQ LX/ LXT/SXT/FXT
Virtex-4 XC LX/SX/FX
Virtex-4 XQ LX/SX/FX
Virtex-4 XQR LX/SX/FX
Spartan-3 XC
Spartan-3 XA
Spartan-3A XC 3A / 3A DSP / 3AN DSP
Spartan-3A XA 3A / 3A DSP
Spartan-3E XC
Spartan-3E XA
*To access these devices in the ISE Design Suite, contact your Xilinx FAE.
4. RESOLVED ISSUES
The following issues are resolved in Block Memory Generator v6.2:
1. Core errors in NGDBuild when the depth is too large (especially for Spartan-6 devices)
Version Fixed: v6.2
- CR 587481
- AR 39718
5. KNOWN ISSUES
The following are known issues for v6.2 of this core at time of release:
1. Virtex-6 and Spartan-6: BRAM Memory collision error, when the user selects TDP (write_mode= Read First)
Work around: The user must review the possible scenarios that causes the collission and revise
their design to avoid those situations.
- CR588505
Note: Refer to UG383, 'Conflict Avoidance' section when using TDP Memory - with
Write Mode = Read First in conjunction with asynchronous clocking
2. Power estimation figures in the datasheet are preliminary for Virtex-5 and Spartan-3.
3. Core does not generate for large memories. Depending on the
machine the ISE CORE Generator software runs on, the maximum size of the memory that
can be generated will vary. For example, a Dual Pentium-4 server
with 2 GB RAM can generate a memory core of size 1.8 MBits or 230 KBytes
- CR 415768
- AR 24034
The most recent information, including known issues, workarounds, and resolutions for
this version is provided in the IP Release Notes User Guide located at
www.xilinx.com/support/documentation/user_guides/xtp025.pdf
6. TECHNICAL SUPPORT
To obtain technical support, create a WebCase at www.xilinx.com/support.
Questions are routed to a team with expertise using this product.
Xilinx provides technical support for use of this product when used
according to the guidelines described in the core documentation, and
cannot guarantee timing, functionality, or support of this product for
designs that do not follow specified guidelines.
7. CORE RELEASE HISTORY
Date By Version Description
================================================================================
06/22/2011 Xilinx, Inc. 6.2 ISE 13.2 support;Virtex-7L,Kintex-7L,Artix7 and Zynq-7000* device support;
03/01/2011 Xilinx, Inc. 6.1 ISE 13.1 support and Virtex-7 and Kintex-7 device support; AXI4/AXI4-Lite Support
09/21/2010 Xilinx, Inc. 4.3 ISE 12.3 support
07/23/2010 Xilinx, Inc. 4.2 ISE 12.2 support
04/19/2010 Xilinx, Inc. 4.1 ISE 12.1 support
03/09/2010 Xilinx, Inc. 3.3 rev 2 Fix for V6 Memory collision issue
12/02/2009 Xilinx, Inc. 3.3 rev 1 ISE 11.4 support; Spartan-6 Low Power
Device support; Automotive Spartan 3A
DSP device support
09/16/2009 Xilinx, Inc. 3.3 Revised to v3.3
06/24/2009 Xilinx, Inc. 3.2 Revised to v3.2
04/24/2009 Xilinx, Inc. 3.1 Revised to v3.1
09/19/2008 Xilinx, Inc. 2.8 Revised to v2.8
03/24/2008 Xilinx, Inc. 2.7 10.1 support; Revised to v2.7
10/03/2007 Xilinx, Inc. 2.6 Revised to v2.6
07/2007 Xilinx, Inc. 2.5 Revised to v2.5
04/2007 Xilinx, Inc. 2.4 Revised to v2.4 rev 1
02/2007 Xilinx, Inc. 2.4 Revised to v2.4
11/2006 Xilinx, Inc. 2.3 Revised to v2.3
09/2006 Xilinx, Inc. 2.2 Revised to v2.2
06/2006 Xilinx, Inc. 2.1 Revised to v2.1
01/2006 Xilinx, Inc. 1.1 Initial release
================================================================================
8. Legal Disclaimer
(c) Copyright 2006 - 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.
Version 4
SymbolType BLOCK
TEXT 32 32 LEFT 4 buffermem
RECTANGLE Normal 32 32 544 1376
LINE Wide 0 80 32 80
PIN 0 80 LEFT 36
PINATTR PinName addra[11:0]
PINATTR Polarity IN
LINE Wide 0 112 32 112
PIN 0 112 LEFT 36
PINATTR PinName dina[7:0]
PINATTR Polarity IN
LINE Normal 0 144 32 144
PIN 0 144 LEFT 36
PINATTR PinName ena
PINATTR Polarity IN
LINE Wide 0 208 32 208
PIN 0 208 LEFT 36
PINATTR PinName wea[0:0]
PINATTR Polarity IN
LINE Normal 0 272 32 272
PIN 0 272 LEFT 36
PINATTR PinName clka
PINATTR Polarity IN
LINE Wide 0 432 32 432
PIN 0 432 LEFT 36
PINATTR PinName addrb[9:0]
PINATTR Polarity IN
LINE Wide 0 464 32 464
PIN 0 464 LEFT 36
PINATTR PinName dinb[31:0]
PINATTR Polarity IN
LINE Normal 0 496 32 496
PIN 0 496 LEFT 36
PINATTR PinName enb
PINATTR Polarity IN
LINE Wide 0 560 32 560
PIN 0 560 LEFT 36
PINATTR PinName web[0:0]
PINATTR Polarity IN
LINE Normal 0 624 32 624
PIN 0 624 LEFT 36
PINATTR PinName clkb
PINATTR Polarity IN
LINE Wide 576 80 544 80
PIN 576 80 RIGHT 36
PINATTR PinName douta[7:0]
PINATTR Polarity OUT
LINE Wide 576 368 544 368
PIN 576 368 RIGHT 36
PINATTR PinName doutb[31:0]
PINATTR Polarity OUT
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<generated_project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
<!-- -->
<!-- For tool use only. Do not edit. -->
<!-- -->
<!-- ProjectNavigator created generated project file. -->
<!-- For use in tracking generated file and other information -->
<!-- allowing preservation of process status. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
<version xmlns="http://www.xilinx.com/XMLSchema">11.1</version>
<sourceproject xmlns="http://www.xilinx.com/XMLSchema" xil_pn:fileType="FILE_XISE" xil_pn:name="buffermem.xise"/>
<files xmlns="http://www.xilinx.com/XMLSchema">
<file xil_pn:fileType="FILE_USERDOC" xil_pn:name="blk_mem_gen_v6_2_readme.txt" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_ASY" xil_pn:name="buffermem.asy" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_SYMBOL" xil_pn:name="buffermem.sym" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_VEO" xil_pn:name="buffermem.veo" xil_pn:origination="imported"/>
</files>
<transforms xmlns="http://www.xilinx.com/XMLSchema"/>
</generated_project>
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6e
$0dg44<,[o}e~g`n;"2*732(-80!<74012345678=:0<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;=>5>0;KMTPR=imnyn1750?37?44=AGZ^X7okdsc?54<768>0=94FNQWW>DBCZH6:?7>115920?OIX\^1MIJ]B=30>58682;1EC^ZT;ufe96=87;;7<4FNQWW>rce490;2<<4338JJUSS2MCJ0>?50?31?64=AGZ^X7JFB=12>586;2996D@_UU8gmkd;;80;2<=4338LQQVR\3NDM1=>:1<27>552F__\XZ5DN@?74<768?0??4@UURVP?bh}}h7?<4?>0380?OIX\^1HD^N<283:47<<3CE\XZ5DHRA86<768:087GAPTV9S@G;;3:5==5;:HLSQQ<PMK686=0>2:69KPRW]]0OC]O33;2=57=32F__\XZ5DNRA86<76l1=av;5bqd772*:8;047GAPTV9`lhf4>0;2<=48;MVPUSS2me~xl28:1<;?DBCZH6;245NDEPB846912KOH_O310<:?DBCZH6:>3l4AEFQE97429427LJKR@>27;><IMNYM1?18:CG@WG;:720MIJ]A=1=<>GCL[K78364AEFQE93902KOH_O36?:8EABUI5=546OKDSC?<;><IMNYM1718:CG@WD;8730MIJ]B=33:<=FLMXI0<?19:CG@WD;9;4i7LJKRC>27?6912KOH_L312<;?DBCZK6:255NDEPA878?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:0611JHI\M<9<;?DBCZK622>5NLM:8FPUXAGLD>6MJ139@L@ELWECHIC]J_U[SA1=DDB:=7NBD1925?FJL:>:>7NBD2Y:8GIM5P82;96MCK827?FJLI<1H@FO>7:AOOD7C:>1H@FO>D558GIMF9M2?7NBDB49@HND6=2IGGN?:;BNH@43<KEAOZn5LLJFU[AOQAMO>7NBDFY:8GIMAP82;56M@MLKWP@B6<2ID^HQHEOGQEQOHFVCEJB94CSGBP@Bd3MK_MRYFDUJ\Ef=CI]KT[DJ[H^@5?AOF494<7IGN<02=3>BNI5;:2:5KI@>26;1<L@K7=>08;EKB8429?2NBM1?:>69GMD:6>7=0HDO316<4?AOF4825;6JFA=3::3=CAH6:2:5KI@>14;1<L@K7><08;EKB8749?2NBM1<<>69GMD:5<7=0HDO324<4?AOF4;<5;6JFA=04:2=CAH694394DHC?6<813MCJ0?08;EKB866912NBM1=>:1<4?AOF4:;5:6JFA=1=2>BNI5>5:6JFA=7=2>BNI5<5:6JFA=5=2>BNI525:6JFA=;=2>BNJ5:5;6JFB=33:2=CAK6:=394DH@?57803MCI0<=17:FJF9736>1OEO2>5?58@LD;9?4<7IGM<05=3>BNJ5;32:5KIC>2=;0<L@H7=394DH@?65803MCI0??17:FJF9456>1OEO2=3?58@LD;:=4<7IGM<37=3>BNJ58=2:5KIC>13;1<L@H7>508;EKA87?9>2NBN1<17:FJF957601OEO2<1;2=3>BNJ59:2;5KIC>0:3=CAK6?2;5KIC>6:3=CAK6=2;5KIC>4:3=CAK632;5KIC>::2=CAYK7<394DHRB84803MC[M1<19:FJTD:4294<7IG_A=1=3>BNXK6;2:5KIQ@?5;1<L@ZI0?06;EKSF95=87=0HD^M<2<5?AIF494<7IAN<02=3>BHI5;:2:5KO@>26;1<LFK7=>08;EMB8429?2NDM1?:>69GKD:6>7=0HBO316<4?AIF4825;6J@A=3::3=CGH6:2:5KO@>14;1<LFK7><08;EMB8749?2NDM1<<>69GKD:5<7=0HBO324<4?AIF4;<5;6J@A=04:2=CGH694394DNC?6<813MEJ0?08;EMB866912NDM1=>:1<4?AIF4:;5:6J@A=1=2>BHI5>5:6J@A=7=2>BHI5<5:6J@A=5=2>BHI525:6J@A=;=3>BHIVXNK;5KOC>3:2=CGK6:<394DN@?54803MEI0<<17:FLF9746>1OCO2>4?58@JD;9<4<7IAM<04=3>BHJ5;<2:5KOC>2<;1<LFH7=409;EMA84803MEI0?>17:FLF9466>1OCO2=2?58@JD;::4<7IAM<36=3>BHJ58>2:5KOC>12;1<LFH7>:08;EMA87>9?2NDN1<6>79GKG:56>1OCO2<0?;8@JD;;80;2:5KOC>05;0<LFH7?384DN@?0;0<LFH79384DN@?2;0<LFH7;384DN@?<;0<LFH75394DN@\V@A03ME[M1>17:FLTD:66>1OC]O32?;8@JVF4:0;2:5KOQC?7;1<LFZI0=08;EMSF979?2ND\O2=>89GKUD;;3:5;6J@PC>0:6=BFH90ICLm;DL\VVRUIDUJn6KA_SQWVDKXJ<1MMA]J1:E0?BHC02CEEY^P01:8MKOSXV::46GAIUR\47><AGC_\R><8:KMMQVX8=20ECG[P^26<>OIA]ZT<;64IOKWTZ60?2CEEYQ?069JJLRX88=0ECG[_104?LHN\V:8;6GAIU]302=NF@^T<894IOKW[5003@DBXR>87:KMMQY70>1BBDZP0858MKOSW9K<7D@FT^2A3>OIA]U;O:5FNHV\4A1<AGC_S=K8;HLJPZ6A?2CEEYQ>069JJLRX98=0ECG[_004?LHN\V;8;6GAIU]202=NF@^T=894IOKW[4003@DBXR?87:KMMQY60>1BBDZP1858MKOSW8K<7D@FT^3A3>OIA]U:O:5FNHV\5A1<AGC_S<K8;HLJPZ7A?2CEEYQ=069JJLRX:8=0ECG[_304?LHN\V88;6GAIU]102=NF@^T>894IOKW[7003@DBXR<87:KMMQY50>1BBDZP2858MKOSW;K<7D@FT^0A3>OIA]U9O:5FNHV\6A1<AGC_S?K8;HLJPZ4A?2CEEYQ<069JJLRX;8=0ECG[_204?LHN\V98;6GAIU]002=NF@^T?894IOKW[6003@DBXR=87:KMMQY40>1BBDZP3858MKOSW:K<7D@FT^1A3>OIA]U8O:5FNHV\7A1<AGC_S>K8;HLJPZ5A>2CEEYQN6:KMMQYE12CEEYQIIMG5?IIFLLN=7AALKDF4?II@AJKGo6CnjnpUawunggi0Ad``rWgqwlii:2D:;6@JTVMQO1=IGGO37B 91yf\H1=WI[^j7]GA_CWPMA^e3YCESO[\N@OF2>VTLFDNm6\NMC35FRCU>2XNKNKN6:PFCFCE<2XXXL:4RRVA3>TT\]S[Ih5]SU]SVLIUA]STMh5]SU]SVLIUA]STN<?4SIPFCZC_\[KHXR@HCd9PLWC@WDCES^GUE018WLKXKFFGE^G@N^AKAFMf3ZCFSIKYIBG5?VIRZJO37^^NRUCM22=TZ_KGSL94SSTBHZD13Z^JXX];;R[MG1=SQYO<?6[?/yqw[gjlWdofSjkaescwkw)`fh~bzhlbg/lbplpbWkf`S`kb_fgm+sgkam$hy| r`ookjv\8T$ym` }/r4\jjoia}$ym`![RTG\@U(WZ@G:4#|nm618Q5){}Ui`fQbel]dakcui}ey#j`nthtffha)fh~bzhQmlj]nahY`mg%}magk.bqwv*tfeeed|V?R.scn*w)t>Vddecg{.scn+QTRMVN["]\FM0:-vdkd3\YN^RXFSH@OA<=QAL]TXT^J6:UFE969>2]NM1?16:UFE94902]NM1=50?48S@G;;7<0[HL30?48S@D;97<0[HL32?:8S@D;;3:5:6YJB=1=f>QUA]OTJD\\Tb9TVLRBWDEOIROl;VPJP@YJGMOTN<j4XHNJJ]+_LK*;"<.\TT@#4+7'IZIBE;5WSUNJF2=_[]ULBIl4X^ALV@YNFOE=7Ujm_Hfe?]boWYxba[k}shmm55=_ldUFmga}Vdppmjh682RoaRCfnnpUawungg90T~z<;Xgp<>gcl{k7<374aefqe9776k1jhi|n<0394;?<imnym1?>>99b`atf48437ljkr`>1:==flmxj0>07;`fgvd:3611jhi|n<4<;?dbczh6=255ndepb828?3hno~l27>99b`atf40437ljkrc>3:==flmxi0<07;`fgvg:5611jhi|m<2<;?dbczk6?255ndepa808?3hno~o29>99b`ate4>437ljkrc>;:d=flmxi044?>99b`ate404:46lck^ofiZabfVmnbh|fc^appw7?3kf`S`kb_fgm[utneV}bhyfP10:8fimXelgTkh`Ppskn[roc|aU9=i5mlj]nahY`mgU{~dcPwscst`tX{?U:=i5mlj]nahY`mgU{~dcPwscst`tX{?U9j6lck^ofiZabfV~d|<>4bmi\i`kXoldTz;Q=2b9ahnYjmdUlicQy6^0/$]okagr+OB\J Fgmawgsg{*:?#<>4:`ooZkbeVmnbRx9_3]{wq743kf`S`kb_hlsqqYedfi`=95mlj]nahYh}}z~xRlcobi:?gsanlxfi`:k8:`vbccuelg'naePmdo\c`hX~?U9 vmPaefqeZqnl}b6=?"l_`fgvgYpam~c1<>#c^cocjtn|ag6=!mPayk\maYpam~c19"l_`zj[vjf~lUu}k20-a\e}oX|pzn1<"l_c{waZunrl72 nQlololjZekc4;'oRjjf`wopZbf|h7; nQkircah`Ypi{dTnexPcnno95*dWmcxmobj_vcqjZdo~Vxjbjk20-a\aigeg{keb`Pdhp>G?)R{lxx#`dcynlp+riuczzjoh!ySQK,twimfh|$t}} pbmqav)tx`cmoRx>_12\e*bb~e%{~bdaaw-jtfiumVnb~"zbp.]`c**dWokfeaw2sqcqpdh1$jUcm~Qnxh]j`86+kVbjRkaa<3/gZnf{Voen0?#c^jbwZoiblii|20-a\lduXelgTcxzuu]qabuXi4:'oRfns^ofiZir|ySkhs^`>4)eX`hyTaxvPotvsqqYumnyTm0>#c^jbwZkrpVe~x}{{_sgdwZd:8%iTdl}Prde`ad;7$jUcm~Q}efaff86+kVbjR||t`?3(fYoizUyyl20-a\lduX{flinmPiorvpZtbozUj1="l_icp[via|lihSb{{ptv\v`atWk7; nQfnhv\bljbWgkfi0``_bmf[cokmVfdmikk,b]jjlrfWkg1="l_hljpgYqie7; nQfnugqbdebW}s{i0>#c^nleaYnf`~Tjdbj=1.`[hcjW}s{i0<#c^ov|ZvnxlfbbhQ|t`efw86+kVzye`Q{yqg>5)eXzlkoSikti]b916>>%iT~hok_egspmYe58:98!mPrdcg[roc|aUj15"l_sgb`Zqnl}bTn0==,b]qwqYwz`eyeywPa<AF(fYu{}U{~da}iu{\f8EB$jUyyQ{yqg>W\HD$jUyy|nm^c>4)eXzz~ym`Qm=1.`[vojWjeg`d}foo]`l`el5HFG nQzsd]a}qcXlk6<!mPurg\f|rbW~oi1="l_tqf[acai|fSio{a<2/gZstmVoho0>#c^wpaZuhn}oho0>#c^ufeZqnl}b6=!mPwd`\slbs`4;'oRy}iug\``vs`Vk68=79,b]tvlrbWmo{xeQm=0210)eX{ciRc`dd]b9RTN\LUME_][,b]tvlrbWdeoiRl2WSKWAZ@NZZ^'oRy}iug\slbs`Vk64!mPwskwaZqnl}bTn0==,b]{``pnklljadbv=rrbvqgi>t;o7o{ifdpnah*edbUfi`Qheo]u2Z4+st>0oaen4:aoog1<l`dj0=08;ekme979?2nbbl2=>69gmkg;;7=0hd`n<5<4?aoii5?5;6jfn`>5:<=cagk7;7>17:fjjd:06>1oecl30?:8`lhe48:546jfnc>25;><l`di0<<18:fjjg:6;720hd`m<06=<>bnfk6:9364dhla840902nbbo2>7?:8`lhe482546jfnc>2=;1<l`di0<07;ekmf947611oecl320<;?aoij589255kio`?668?3mcen1<;>99gmkd;:<437igab=05:==cagh7>:07;ekmf94?611oecl328<4?aoij58546jfnc>04;g<l`di0>?50?:8`lhe4:;5;6jfnc>0:2=cagh78394dhla80803mcen1817:fjjg:06>1oecl38?58`lhe40437iazt`>3:==cg|~j0<07;emvpd:5611ocxzn<2<;?air|h6?255kotvb808?3me~xl29>`9gkprf4>0;255kotvb828?3me~xo2?>89gkpre48:556j`uu`?548>3me~xo2>2?;8`jssj5;8245kotva842912ndyyl314<:?air|k6::374dnwwf970601ocxzm<0:==>bh}}h7=407;emvpg:6601ocxzm<32==>bh}}h7><06;emvpg:5:730hb{{b=00:<=cg|~i0?:19:flqqd;:<427iaztc>12;?<lfn1<8>89gkpre4;2556j`uu`?6<8?3me~xo2=>89gkpre4::5n6j`uu`?74<7601ocxzm<23=<>bh}}h7?364dnwwf92902ndyyl35?:8`jssj5<546j`uu`?3;><lfn1618:flqqd;1790ico<;dla<>h`kkb`i64wdc?4?69>2}nm1>18:uff96=87<0{hl30?CDu4dl2JKt<7k:G87>4}T=90:;54>46827665i=095l9:{o342?7<f8=<6;5+1669526<uZ>n6<97:064>4548;k?6?7n819P56`=9o21<7?<310b0?4>i120_9k51g:94?74;98j87<6a9;8`4?c290:6<u\51823=<6<>0:?>>=a581=d1b3^:954?:082>3b|[<:1=:6515595657:h>1>4o8e:&227<6<81]=:;52zw207<63|;??7>4}%37<?713k;2h7>56b80>3b|@8<:7)?:e;3:`>\4032p47;5168:>1<d2821j7s+16195<?<,:k1=4h4$5d95<c<,8?>6<5+146952?<a8lj6=4+15c95c?<f8>26=54i05g>5<#9=k1=:m4n06:>5=<a8=i6=4+15c952e<f8>26<54i0:5>5<#9=k1=:m4n06:>7=<a82>6=4+15c952e<f8>26>54i0:7>5<#9=k1=:m4n06:>1=<a8286=4+15c952e<f8>26854i0:1>5<#9=k1=:m4n06:>3=<a82:6=4+15c952e<f8>26:54i0:3>5<#9=k1=:m4n06:>==<a8=m6=4+15c952e<f8>26454i05f>5<#9=k1=:m4n06:>d=<a8=j6=4+15c952e<f8>26o54i0cb>5<#9=k1=l74n06:>5=<a8k36=4+15c95d?<f8>26<54i0c4>5<#9=k1=l74n06:>7=<a8k=6=4+15c95d?<f8>26>54i0c6>5<#9=k1=l74n06:>1=<a8k?6=4+15c95d?<f8>26854i0c0>5<#9=k1=l74n06:>3=<a8k96=4+15c95d?<f8>26:54i0d`>5<#9=k1=kl4n06:>5=<a83:6=4+15c95<6<f8>26=54i0:e>5<#9=k1=4>4n06:>4=<a82n6=4+15c95<6<f8>26?54i0:g>5<#9=k1=4>4n06:>6=<a82h6=4+15c95<6<f8>26954i0:a>5<#9=k1=4>4n06:>0=<a82j6=4+15c95<6<f8>26;54i0::>5<#9=k1=4>4n06:>2=<a8236=4+15c95<6<f8>26554i0:4>5<#9=k1=4>4n06:><=<a8i?6=4+15c95f5<f8>26=54i0a1>5<#9=k1=n=4n06:>4=<a8i;6=4+15c95f5<f8>26?54i0`e>5<#9=k1=n=4n06:>6=<a8hn6=4+15c95f5<f8>26954i0`g>5<#9=k1=n=4n06:>0=<a8hh6=4+15c95f5<f8>26;54i0`a>5<#9=k1=n=4n06:>2=<a8hj6=4+15c95f5<f8>26554i0`:>5<#9=k1=n=4n06:><=<a8h36=4+15c95f5<f8>26l54i0`4>5<#9=k1=n=4n06:>g=<a8h>6=4+15c95f5<f8>26n54i0`7>5<#9=k1=n=4n06:>a=<a8h86=4+15c95f5<f8>26h54i0`1>5<#9=k1=n=4n06:>c=<a8h:6=4+15c95f5<f8>26<>4;h3a4?6=,8>j6<m<;o37=?7632c:mk4?:%37e?7d;2d:844>2:9j5dc=83.:8l4>c29m51?=9:10e<ok:18'51g=9j90b<:6:068?l7fk3:1(<:n:0a0?k7313;>76g>cc83>!73i3;h?6`>48822>=n9jk1<7*>4`82g6=i9=31=:54i0a:>5<#9=k1=n=4n06:>4><3`;h47>5$06b>4e43g;?57?6;:k2g2<72-;?m7?l3:l20<<6i21b=n850;&20d<6k:1e=9751c98m4e2290/=9o51b18j42>28i07d?l1;29 42f28i87c?;9;3g?>o6j?0;6)?;a;3`7>h6<00:i65f1``94?"6<h0:o>5a15;95c=<a8k;6=44i0d5>5<<a8k:6=44i0d4>5<<g8n?6=4+15c95a5<f8>26=54o0f1>5<#9=k1=i=4n06:>4=<g8n:6=4+15c95a5<f8>26?54o0f3>5<#9=k1=i=4n06:>6=<g8im6=4+15c95a5<f8>26954o0af>5<#9=k1=i=4n06:>0=<g8io6=4+15c95a5<f8>26;54o0a`>5<#9=k1=i=4n06:>2=<g8on6=4+15c95`b<f8>26=54o0g`>5<#9=k1=hj4n06:>4=<g8oj6=4+15c95`b<f8>26?54o0g:>5<#9=k1=hj4n06:>6=<g8o36=4+15c95`b<f8>26954o0g4>5<#9=k1=hj4n06:>0=<g8o=6=4+15c95`b<f8>26;54o0g6>5<#9=k1=hj4n06:>2=<g8o?6=4+15c95`b<f8>26554o0g0>5<#9=k1=hj4n06:><=<g8o96=4+15c95`b<f8>26l54o0g2>5<#9=k1=hj4n06:>g=<g8nm6=4+15c95`b<f8>26n54o0ff>5<#9=k1=hj4n06:>a=<g8no6=4+15c95`b<f8>26h54o0f`>5<#9=k1=hj4n06:>c=<g8ni6=4+15c95`b<f8>26<>4;n3ge?6=,8>j6<kk;o37=?7632e:h44?:%37e?7bl2d:844>2:9l5a>=83.:8l4>ee9m51?=9:10c<j8:18'51g=9ln0b<:6:068?j7c>3:1(<:n:0gg?k7313;>76a>f483>!73i3;nh6`>48822>=h9o>1<7*>4`82aa=i9=31=:54o0d0>5<#9=k1=hj4n06:>4><3f;m>7>5$06b>4cc3g;?57?6;:m2b4<72-;?m7?jd:l20<<6i21d=k>50;&20d<6mm1e=9751c98k4ca290/=9o51df8j42>28i07b?jb;29 42f28oo7c?;9;3g?>i6m90;6)?;a;3f`>h6<00:i65`1e794?"6<h0:ii5a15;95c=<j8=96=4>:183!72m3l87E?81:J224=hn;0;66sm14d94?dd290;w)?:e;37g>N6?81C=;?4Z2:9g~0=?3;;6<:510821?752m0i6h4>3;c9yk362=1e9?4>2:l`4?6<fl81<6*jf;d2?!`72o;0(k:53:&e1?5<,o<1?6*i7;18 c>=;2.m57=4$gc97>"aj390(km53:&e`?5<,oo1?6*if;18 4672:1/==?53:&247<43-;;?7=4$027>6=#99?1?6*>0780?!77?390(<>7:29'55?=;2.:<l4<;%33f?5<,8:h6>5+11f97>"68l087)??f;18 4772:1/=<?53:&257<43-;:?7=4$037>6=#98?1?6*>1780?!76?390(<?7:29'54?=;2.:=l4<;%32f?5<,8;h6>5+10f97>"69l087)?>f;18 4472:1/=??53:&267<43-;9?7=4$007>6=#9;?1?6*>2780?!75?390(<<7:29'57?=;2.:>l4<;%31f?5<,88h6>5+13f97>"6:l087)?=f;18 4572:1/=>?53:&277<43-;8?7=4$017>6=#9:?1?6*>3780?!74?390(<=7:29'56?=;2.:?l4<;%30f?5<,89h6?5+12f96>"6;l0:8;5+143950b<,8?96>74$070>6?<,8?=6>94$074>43>3-;>m7<4$07a>7=#9?o1=;j4$04e>40c3`;?h7>5;h62>5<<alo1<75f14294?=n<?0;66g>4d83>>o6<o0;66gjd;29?l?>290/=9o5999m51?=821b5:4?:%37e???3g;?57?4;h;5>5<#9=k1555a15;96>=n1<0;6)?;a;;;?k7313907d?97;29 42f28<=7c?;9;28?l71=3:1(<:n:045?k7313;07d?94;29 42f28<=7c?;9;08?l71;3:1(<:n:045?k7313907bl7:18'51g=j>1e=9750:9lf3<72-;?m7l8;o37=?7<3fh?6=4+15c9f2=i9=31>65`b283>!73i3h<7c?;9;18?jd5290/=9o5b69m51?=<21dn<4?:%37e?d03g;?57;4;n`3>5<#9=k1n:5a15;92>=hio0;6)?;a;`4?k7313=07boj:18'51g=j>1e=9758:9lea<72-;?m7l8;o37=??<3fkh6=4+15c9f2=i9=31m65`ac83>!73i3h<7c?;9;`8?jg>290/=9o5b69m51?=k21dm54?:%37e?d03g;?57j4;nc4>5<#9=k1n:5a15;9a>=hi?0;6)?;a;`4?k7313l07bo::18'51g=j>1e=9751198kd2=83.:8l4m7:l20<<6921dm>4?:%37e?d03g;?57?=;:mb6?6=,8>j6o94n06:>45<3fk:6=4+15c9f2=i9=31=954o`294?"6<h0i;6`>48821>=hjo0;6)?;a;`4?k7313;=76ame;29 42f2k=0b<:6:058?jdc290/=9o5b69m51?=9110com50;&20d<e?2d:844>9:9lfg<72-;?m7l8;o37=?7f32eim7>5$06b>g1<f8>26<l4;n`:>5<#9=k1n:5a15;95f=<gk?1<7*>4`8a3>h6<00:h65`a`83>!73i3h<7c?;9;3f?>i>n3:1(<:n:c58j42>28l07d?j:18'51g=9m1e=9750:9j5f<72-;?m7?k;o37=?7<3`;i6=4+15c95a=i9=31>65f1`83>!73i3;o7c?;9;18?l40290/=9o51e9m51?=<21b>;4?:%37e?7c3g;?57;4;h06>5<#9=k1=i5a15;92>=n:=0;6)?;a;3g?k7313=07d<<:18'51g=9m1e=9758:9j67<72-;?m7?k;o37=??<3`8:6=4+15c95a=i9=31m65f2183>!73i3;o7c?;9;`8?l7a290/=9o51e9m51?=k21b=44?:%37e?7c3g;?57j4;h0g>5<#9=k1>n5a15;94>=n:k0;6)?;a;0`?k7313;07d<n:18'51g=:j1e=9752:9j6<<72-;?m7<l;o37=?5<3`9=6=4+15c96f=i9=31865f3483>!73i38h7c?;9;78?l53290/=9o52b9m51?=>21b?>4?:%37e?4d3g;?5794;h11>5<#9=k1>n5a15;9<>=n;80;6)?;a;0`?k7313307d=?:18'51g=:j1e=975a:9j6c<72-;?m7<l;o37=?d<3`8n6=4+15c96f=i9=31o65f2983>!73i38h7c?;9;f8?l>c290/=9o58b9m51?=821b4o4?:%37e?>d3g;?57?4;h::>5<#9=k14n5a15;96>=n010;6)?;a;:`?k7313907d68:18'51g=0j1e=9754:9j<3<72-;?m76l;o37=?3<3`2>6=4+15c9<f=i9=31:65f8583>!73i32h7c?;9;58?l>4290/=9o58b9m51?=021b4?4?:%37e?>d3g;?5774;h:2>5<#9=k14n5a15;9e>=n090;6)?;a;:`?k7313h07d9j:18'51g=0j1e=975c:9j3a<72-;?m76l;o37=?b<3`=h6=4+15c9<f=i9=31i65f7c83>!73i32h7c?;9;d8?l1f290/=9o58b9m51?=9910e:750;&20d<?k2d:844>1:9j3=<72-;?m76l;o37=?7532c<;7>5$06b>=e<f8>26<=4;h55>5<#9=k14n5a15;951=<a>?1<7*>4`8;g>h6<00:965f9583>!73i32h7c?;9;35?>o>;3:1(<:n:9a8j42>28=07d7=:18'51g=0j1e=9751998m<7=83.:8l47c:l20<<6121b5=4?:%37e?>d3g;?57?n;:k;b?6=,8>j65m4n06:>4d<3`2n6=4+15c9<f=i9=31=n54i9c94?"6<h03o6`>4882`>=n?o0;6)?;a;:`?k7313;n76g84;29 42f21i0b<:6:0d8?jc0290/=9o5e79m51?=821di84?:%37e?c13g;?57?4;ng7>5<#9=k1i;5a15;96>=hm:0;6)?;a;g5?k7313907d7j:18'51g=1m1e=9750:9j=f<72-;?m77k;o37=?7<3`3i6=4+15c9=a=i9=31>65f9`83>!73i33o7c?;9;18?jcd290/=9o5ec9m51?=821dil4?:%37e?ce3g;?57?4;ng:>5<#9=k1io5a15;96>=hm10;6)?;a;ga?k7313907bjn:18'51g=l01e=9750:9l`=<72-;?m7j6;o37=?7<3fn=6=4+15c9`<=i9=31>65`d483>!73i3n27c?;9;18?jb3290/=9o5d89m51?=<21dh>4?:%37e?b>3g;?57;4;nf1>5<#9=k1h45a15;92>=hl80;6)?;a;f:?k7313=07bj?:18'51g=l01e=9758:9lgc<72-;?m7j6;o37=??<3fin6=4+15c9`<=i9=31m65`ce83>!73i3n27c?;9;`8?jee290/=9o5d89m51?=k21dol4?:%37e?b>3g;?57j4;na:>5<#9=k1h45a15;9a>=hk10;6)?;a;f:?k7313l07bm8:18'51g=l01e=9751198kf0=83.:8l4k9:l20<<6921do84?:%37e?b>3g;?57?=;:m`0?6=,8>j6i74n06:>45<3fi86=4+15c9`<=i9=31=954ob094?"6<h0o56`>48821>=hm80;6)?;a;f:?k7313;=76aj0;29 42f2m30b<:6:058?jba290/=9o5d89m51?=9110cik50;&20d<c12d:844>9:9l`a<72-;?m7j6;o37=?7f32eoo7>5$06b>a?<f8>26<l4;nfa>5<#9=k1h45a15;95f=<gm=1<7*>4`8g=>h6<00:h65`cb83>!73i3n27c?;9;3f?>id93:1(<:n:e;8j42>28l07d?9c;29 42f28<i7c?;9;28?l71i3:1(<:n:04a?k7313;07d?99;29 42f28<i7c?;9;08?l7103:1(<:n:04a?k7313907d8l:18'51g=>k1e=9750:9j2d<72-;?m78m;o37=?7<3`<36=4+15c92g=i9=31>65f6683>!73i3<i7c?;9;18?l01290/=9o56c9m51?=<21b:84?:%37e?0e3g;?57;4;h47>5<#9=k1:o5a15;92>=n>:0;6)?;a;4a?k7313=07d8=:18'51g=>k1e=9758:9j24<72-;?m78m;o37=??<3`<;6=4+15c92g=i9=31m65f5g83>!73i3<i7c?;9;`8?l3c290/=9o56c9m51?=k21b9n4?:%37e?0e3g;?57j4;h7a>5<#9=k1:o5a15;9a>=n=h0;6)?;a;4a?k7313l07d;6:18'51g=>k1e=9751198m0>=83.:8l49b:l20<<6921b9:4?:%37e?0e3g;?57?=;:k62?6=,8>j6;l4n06:>45<3`?>6=4+15c92g=i9=31=954i4694?"6<h0=n6`>48821>=n?:0;6)?;a;4a?k7313;=76g82;29 42f2?h0b<:6:058?l16290/=9o56c9m51?=9110e:>50;&20d<1j2d:844>9:9j2c<72-;?m78m;o37=?7f32c=i7>5$06b>3d<f8>26<l4;h4g>5<#9=k1:o5a15;95f=<a?31<7*>4`85f>h6<00:h65f5d83>!73i3<i7c?;9;3f?>o2;3:1(<:n:7`8j42>28l07pl>6183>ge=83:p(<;j:06`?M7092B::<5U398`3<028:1=94>1;36>44=l3h1i7?<:`8~j07=<2d>>7?=;oa3>5=im;0;7)ki:g38 c6=n81/j94<;%d6>6=#n?087)h8:29'b=<43-l26>5+f`80?!`e2:1/jn4<;%dg>6=#nl087)hi:29'556=;2.:<<4<;%336?5<,8:86>5+11697>"68<087)??6;18 4602:1/==653:&24<<43-;;m7=4$02a>6=#99i1?6*>0e80?!77m390(<>i:29'546=;2.:=<4<;%326?5<,8;86>5+10697>"69<087)?>6;18 4702:1/=<653:&25<<43-;:m7=4$03a>6=#98i1?6*>1e80?!76m390(<?i:29'576=;2.:><4<;%316?5<,8886>5+13697>"6:<087)?=6;18 4402:1/=?653:&26<<43-;9m7=4$00a>6=#9;i1?6*>2e80?!75m390(<<i:29'566=;2.:?<4<;%306?5<,8986>5+12697>"6;<087)?<6;18 4502:1/=>653:&27<<43-;8m7=4$01a>6=#9:i1>6*>3e81?!74m3;?:6*>50821a=#9<81?45+14197<=#9<<1?:5+145950?<,8?j6?5+14`96>"6>l0::i5+17d953b<a8>o6=44i5394?=nml0;66g>5183>>o3>3:17d?;e;29?l73n3:17dkk:188m<?=83.:8l468:l20<<732c2;7>5$06b><><f8>26<54i8494?"6<h0246`>4881?>o>=3:1(<:n:8:8j42>2:10e<88:18'51g=9?<0b<:6:198m402290/=9o51748j42>2810e<8;:18'51g=9?<0b<:6:398m404290/=9o51748j42>2:10co650;&20d<e?2d:844?;:ma2?6=,8>j6o94n06:>4=<gk>1<7*>4`8a3>h6<00976am3;29 42f2k=0b<:6:298kg4=83.:8l4m7:l20<<332ei=7>5$06b>g1<f8>26854oc294?"6<h0i;6`>4885?>ifn3:1(<:n:c58j42>2>10clk50;&20d<e?2d:8447;:mb`?6=,8>j6o94n06:><=<ghi1<7*>4`8a3>h6<00j76anb;29 42f2k=0b<:6:c98kd?=83.:8l4m7:l20<<d32ej47>5$06b>g1<f8>26i54o`594?"6<h0i;6`>488f?>if>3:1(<:n:c58j42>2o10cl;50;&20d<e?2d:844>0:9le1<72-;?m7l8;o37=?7632ej?7>5$06b>g1<f8>26<<4;nc1>5<#9=k1n:5a15;956=<gh;1<7*>4`8a3>h6<00:865`a183>!73i3h<7c?;9;36?>ien3:1(<:n:c58j42>28<07blj:18'51g=j>1e=9751698kgb=83.:8l4m7:l20<<6021dnn4?:%37e?d03g;?57?6;:maf?6=,8>j6o94n06:>4g<3fhj6=4+15c9f2=i9=31=o54oc;94?"6<h0i;6`>4882g>=hj<0;6)?;a;`4?k7313;o76ana;29 42f2k=0b<:6:0g8?j?a290/=9o5b69m51?=9o10e<k50;&20d<6l2d:844?;:k2g?6=,8>j6<j4n06:>4=<a8h1<7*>4`82`>h6<00976g>a;29 42f28n0b<:6:298m71=83.:8l4>d:l20<<332c9:7>5$06b>4b<f8>26854i3794?"6<h0:h6`>4885?>o5<3:1(<:n:0f8j42>2>10e?=50;&20d<6l2d:8447;:k16?6=,8>j6<j4n06:><=<a;;1<7*>4`82`>h6<00j76g=0;29 42f28n0b<:6:c98m4`=83.:8l4>d:l20<<d32c:57>5$06b>4b<f8>26i54i3f94?"6<h09o6`>4883?>o5j3:1(<:n:3a8j42>2810e?o50;&20d<5k2d:844=;:k1=?6=,8>j6?m4n06:>6=<a:<1<7*>4`81g>h6<00?76g<5;29 42f2;i0b<:6:498m62=83.:8l4=c:l20<<132c8?7>5$06b>7e<f8>26:54i2094?"6<h09o6`>488;?>o493:1(<:n:3a8j42>2010e>>50;&20d<5k2d:844n;:k1b?6=,8>j6?m4n06:>g=<a;o1<7*>4`81g>h6<00h76g=8;29 42f2;i0b<:6:e98m=b=83.:8l47c:l20<<732c3n7>5$06b>=e<f8>26<54i9;94?"6<h03o6`>4881?>o?03:1(<:n:9a8j42>2:10e5950;&20d<?k2d:844;;:k;2?6=,8>j65m4n06:>0=<a1?1<7*>4`8;g>h6<00=76g74;29 42f21i0b<:6:698m=5=83.:8l47c:l20<<?32c3>7>5$06b>=e<f8>26454i9394?"6<h03o6`>488b?>o?83:1(<:n:9a8j42>2k10e:k50;&20d<?k2d:844l;:k4`?6=,8>j65m4n06:>a=<a>i1<7*>4`8;g>h6<00n76g8b;29 42f21i0b<:6:g98m2g=83.:8l47c:l20<<6821b;44?:%37e?>d3g;?57?>;:k4<?6=,8>j65m4n06:>44<3`=<6=4+15c9<f=i9=31=>54i6494?"6<h03o6`>48820>=n?<0;6)?;a;:`?k7313;>76g64;29 42f21i0b<:6:048?l?4290/=9o58b9m51?=9>10e4<50;&20d<?k2d:844>8:9j=4<72-;?m76l;o37=?7>32c2<7>5$06b>=e<f8>26<o4;h:e>5<#9=k14n5a15;95g=<a1o1<7*>4`8;g>h6<00:o65f8`83>!73i32h7c?;9;3g?>o0n3:1(<:n:9a8j42>28o07d9;:18'51g=0j1e=9751g98k`1=83.:8l4j6:l20<<732en97>5$06b>`0<f8>26<54od694?"6<h0n:6`>4881?>ib;3:1(<:n:d48j42>2:10e4k50;&20d<>l2d:844?;:k:g?6=,8>j64j4n06:>4=<a0h1<7*>4`8:`>h6<00976g6a;29 42f20n0b<:6:298k`e=83.:8l4jb:l20<<732enm7>5$06b>`d<f8>26<54od;94?"6<h0nn6`>4881?>ib03:1(<:n:d`8j42>2:10cio50;&20d<c12d:844?;:mg<?6=,8>j6i74n06:>4=<gm<1<7*>4`8g=>h6<00976ak5;29 42f2m30b<:6:298ka2=83.:8l4k9:l20<<332eo?7>5$06b>a?<f8>26854oe094?"6<h0o56`>4885?>ic93:1(<:n:e;8j42>2>10ci>50;&20d<c12d:8447;:m`b?6=,8>j6i74n06:><=<gjo1<7*>4`8g=>h6<00j76ald;29 42f2m30b<:6:c98kfd=83.:8l4k9:l20<<d32ehm7>5$06b>a?<f8>26i54ob;94?"6<h0o56`>488f?>id03:1(<:n:e;8j42>2o10cn950;&20d<c12d:844>0:9lg3<72-;?m7j6;o37=?7632eh97>5$06b>a?<f8>26<<4;na7>5<#9=k1h45a15;956=<gj91<7*>4`8g=>h6<00:865`c383>!73i3n27c?;9;36?>ib93:1(<:n:e;8j42>28<07bk?:18'51g=l01e=9751698ka`=83.:8l4k9:l20<<6021dhh4?:%37e?b>3g;?57?6;:mg`?6=,8>j6i74n06:>4g<3fnh6=4+15c9`<=i9=31=o54oe`94?"6<h0o56`>4882g>=hl>0;6)?;a;f:?k7313;o76alc;29 42f2m30b<:6:0g8?je6290/=9o5d89m51?=9o10e<8l:18'51g=9?h0b<:6:198m40f290/=9o517`8j42>2810e<86:18'51g=9?h0b<:6:398m40?290/=9o517`8j42>2:10e;m50;&20d<1j2d:844?;:k5e?6=,8>j6;l4n06:>4=<a?21<7*>4`85f>h6<00976g97;29 42f2?h0b<:6:298m30=83.:8l49b:l20<<332c=97>5$06b>3d<f8>26854i7694?"6<h0=n6`>4885?>o1;3:1(<:n:7`8j42>2>10e;<50;&20d<1j2d:8447;:k55?6=,8>j6;l4n06:><=<a?:1<7*>4`85f>h6<00j76g:f;29 42f2?h0b<:6:c98m0b=83.:8l49b:l20<<d32c>o7>5$06b>3d<f8>26i54i4`94?"6<h0=n6`>488f?>o2i3:1(<:n:7`8j42>2o10e8750;&20d<1j2d:844>0:9j1=<72-;?m78m;o37=?7632c>;7>5$06b>3d<f8>26<<4;h75>5<#9=k1:o5a15;956=<a<?1<7*>4`85f>h6<00:865f5583>!73i3<i7c?;9;36?>o0;3:1(<:n:7`8j42>28<07d9=:18'51g=>k1e=9751698m27=83.:8l49b:l20<<6021b;=4?:%37e?0e3g;?57?6;:k5b?6=,8>j6;l4n06:>4g<3`<n6=4+15c92g=i9=31=o54i7f94?"6<h0=n6`>4882g>=n>00;6)?;a;4a?k7313;o76g:e;29 42f2?h0b<:6:0g8?l34290/=9o56c9m51?=9o10q~?;4;293a}:9>81j?5214d95c=:9<l1=45214d975=:9<l1>k5214d96`=:9<l1>55214d92f=:9<l1:l5214d92==:9<l1::5214d923=:9<l1:85214d921=:9<l1:>5214d927=:9<l1:<5214d925=:9<l19k5214d91a=:9<l19n5214d91g=:9<l19l5214d91<=:9<l1955214d912=:9<l19;5214d910=:9<l1995214d936=:9<l1;?5214d934=:9<l1;=5214d92c=:9<l1:h5214d9<a=:9<l14o5214d9<<=:9<l1455214d9<2=:9<l14;5214d9<0=:9<l1495214d9<6=:9<l14?5214d9<4=:9<l14=5214d93`=:9<l1;i5214d93f=:9<l1;o5214d9=<=:9<l15:5214d9=3=:9<l1585214d9=`=:9<l15n5214d9=g=:9<l15l5214d951b<58?m6<:j;<36b?73n27:9k4>519>536=9o16=;>5189>536=;916=;>52g9>536=:l16=;>5299>536=>j16=;>56`9>536=>116=;>5669>536=>?16=;>5649>536=>=16=;>5629>536=>;16=;>5609>536=>916=;>55g9>536==m16=;>55b9>536==k16=;>55`9>536==016=;>5599>536==>16=;>5579>536==<16=;>5559>536=?:16=;>5739>536=?816=;>5719>536=>o16=;>56d9>536=0m16=;>58c9>536=0016=;>5899>536=0>16=;>5879>536=0<16=;>5859>536=0:16=;>5839>536=0816=;>5819>536=?l16=;>57e9>536=?j16=;>57c9>536=1016=;>5969>536=1?16=;>5949>536=1l16=;>59b9>536=1k16=;>59`9>536=9=n01<8?:06f?87183;?j63>618215=z{8n>6=4={_3g1>;6=o0h=6s|1d294?4|V8o;70?:f;a`?xu6mk0;6?uQ1d`8943a2m=0q~?jf;296~X6mo16=8h5dc9~w4`72909wS?i0:?225<d92wx=k?50;0xZ4`634;=<7ml;|q2b7<72;qU=k<4=043>a1<uz;m?7>52z\2b6=:9?:1ho5rs0d7>5<5sW;m863>5g8gg>{t9o?1<7<t^0d6?872n3no7p}>d783>7}Y9m<01<;i:eg8yv7c?3:1>vP>d69>50`=lo1v<j7:181[7c027::=4kc:p5a?=838pR<j6;<354?bc3ty:hl4?:3y]5ag<58<;6ik4}r3gf?6=:rT:ho521729`c=z{8nh6=4={_3gg>;6=o0n<6s|1ef94?4|V8no70?:f;g2?xu6ll0;6?uQ1eg8943a2j80q~?kf;296~X6lo16=8h5c29~w4c62909wS?j1:?225<b82wx=h<50;0xZ4c534;=<7k>;|q2a6<72;qU=h=4=043>f4<uz;n87>52z\2a1=:9?:1o>5rs0g6>5<5sW;n963>5g8`0>{t9l<1<7<t^0g5?872n3i>7p}>e683>7}Y9l=01<;i:b48yv7b03:1>vP>e99>50`=k>1v<k6:181[7b127::=4l4:p5`g=838pR<kn;<354?e23ty:in4?:3y]5`e<58<;6n84}r3fa?6=:rT:ih521729g2=z{8ih6=4={_3`g>;6=o02j6s|1bf94?4|V8io70?:f;cb?xu6kl0;6?uQ1bg8943a2k?0q~?lf;296~X6ko16=8h5b89~w4b72909wS?k0:?225<>n2wx=i?50;0xZ4b634;=<7on;|q2`7<72;qU=i<4=043>g3<uz;o87>52z\2`1=:9?:1n45rs0d4>5<4sW;m;63>5g8fa>;6>90ni6s|1`394?5|V8k:70?:f;65?87183>=7p}>f783>6}Y9o<01<;i:df894072ln0q~?n0;297~X6i916=8h5409>536=<81v<om:181[7fj27:9k484:p5g0=838pR<l9;<36b?1a3ty:o<4?:3y]5f7<58?m65o4}r3`1?6=:rT:o85214d9<`=z{8i=6=4={_3`2>;6>90<86s|1b594?4|V8i<70?90;5e?xu6k10;6?uQ1b:8940721k0q~?l9;296~X6k016=;>58d9~w4ef2909wS?la:?21c<?n2wx=nl50;0xZ4ee34;>j77?;|q2ef<72;qU=lm4=07e><7<uz;jh7>52z\2ea=:9<l15?5rs0cf>5<5sW;ji63>618;b>{t9hl1<7<t^0ce?871833;7p}>b183>7}Y9k:01<8?:838yv7e93:1>vP>b09>536=1;1v<l=:181[7e:27:9k463:p5g5=838pR<l<;<36b??33ty:n94?:3y]5g2<58?m6:;4}r3a1?6=:rT:n85214d933=z{8h<6=4={_3a3>;6>902?6s|1c:94?4|V8h370?90;;7?xu6j00;6?uQ1c;894072>?0q~?ma;296~X6jh16=;>5779~w4de2909wS?mb:?21c<0?2wx=om50;0xZ4dd34;>j797;|q2fa<72;qU=oj4=07e>2?<uz;ii7>52z\2f`=:9<l1;l5rs0`e>5<5sW;ij63>61843>{t9j:1<7<t^0a3?87183=37p}>c383>7}Y9j801<8?:6;8yv7d<3:1>vP>c59>536=?h1v<68:180[7??27:9k4<1:?225<492wx=5650;1xZ4>?34;>j7==;<354?553ty:444?:2y]5=?<58?m6>=4=043>65<uz;3m7>53z\2<d=:9<l1?952172971=z{82i6=4<{_3;f>;6=o08963>61801>{t91i1<7=t^0:`?872n39=70?90;15?xu60m0;6>uQ19f8943a2;301<8?:3;8yv7?m3:1?vP>8d9>50`=:h16=;>52`9~w4>a2908wS?7f:?21c<5j27::=4=b:p5<7=839pR<7>;<36b?4c34;=<7<k;|q2bf<720qU=km4=07e>40d34;>j7?9a:?21c<6>016=8h517:8940728<h70?90;35e>;6>90::452172953><uz;j>7>52z\2e7=:9<l19>5rs0c0>5<5sW;j?63>5g86a>{t9h>1<7<t^0c7?872n3<27p}>a483>7}Y9h?01<;i:7f8yv7f>3:1>vP>a79>536==:1v<o8:181[7f?27::=4:e:p5d>=838pR<o7;<354?0>3ty:ml4?:3y]5dg<58<;6;j4}r34e?6=;rT:;l5214d965=:9?:1>=5rs05f>5<4sW;<i63>5g815>;6>909=6s|16d94?5|V8=m70?:f;01?87183897p}>8183>6}Y91:01<;i:31894072;90q~?71;297~X60816=8h5259>536=:=1v<6=:180[7?:27:9k4=5:?225<5=2wx=5=50;1xZ4>434;>j7<9;<354?413ty:494?:2y]5=2<58?m6?94=043>71<uz;397>53z\2<0=:9<l1=l5217295d=z{82=6=4<{_3;2>;6=o0:n63>6182f>{t9>h1<7=t^05a?872n3;h70?90;3`?xu6?m0;6>uQ16f8943a28o01<8?:0g8yv7ai3:15vP>f`9>50`=9?=01<;i:046?872n3;=863>5g8226=:9?:1=;94=043>40234;=<7?94:?225<6>:1vqc?i3;295~N6>81vb<h;:182M7192we=k;50;3xL4063td:j;4?:0yK537<ug;m;7>51zJ224=zf8l36=4>{I355>{i9o31<7?tH042?xh6nh0;6<uG1738yk7aj3:1=vF>609~j4`d290:wE?91:m5cb=83;pD<8>;|l2b`<728qC=;?4}o3eb?6=9rB::<5rn323>5<6sA;==6sa21394?7|@8<:7p`=0383>4}O9?;0qc<?3;295~N6>81vb?>;:182M7192we>=;50;3xL4063td9<;4?:0yK537<ug8;;7>51zJ224=zf;:36=4>{I355>{i:931<7?tH042?xh58h0;6<uG1738yk47j3:1=vF>609~j76d290:wE?91:m65b=83;pD<8>;|l14`<728qC=;?4}o03b?6=9rB::<5rn333>5<6sA;==6sa20394?7|@8<:7p`=1383>4}O9?;0qc<>3;295~N6>81vb??;:182M7192we><;50;3xL4063td9=;4?:0yK537<ug8:;7>51zJ224=zf;;36=4>{I355>{i:831<7?tH042?xh59h0;6<uG1738yk46j3:1=vF>609~j77d290:wE?91:m64b=83;pD<8>;|l15`<728qC=;?4}o02b?6=9rB::<5rn303>5<6sA;==6sa23394?7|@8<:7p`=2383>4}O9?;0qc<=3;295~N6>81vb?<;:182M7192we>?;50;3xL4063td9>;4?:0yK537<ug89;7>51zJ224=zf;836=4>{I355>{i:;31<7?tH042?xh5:h0;6<uG1738yk45j3:1=vF>609~j74d290:wE?91:m67b=83;pD<8>;|l16`<728qC=;?4}o01b?6=9rB::<5rn313>5<6sA;==6sa22394?7|@8<:7p`=3383>4}O9?;0qc<<3;295~N6>81vb?=;:182M7192we>>;50;3xL4063td9?;4?:0yK537<ug88;7>51zJ224=zf;936=4>{I355>{i::31<7?tH042?xh5;h0;6<uG1738yk44j3:1=vF>609~j75d290:wE?91:m66b=83;pD<8>;|l17`<728qC=;?4}o00b?6=9rB::<5rn363>5<6sA;==6sa25394?7|@8<:7p`=4383>4}O9?;0qc<;3;295~N6>81vb?:;:182M7192we>9;50;3xL4063td98;4?:0yK537<ug8?;7>51zJ224=zf;>36=4>{I355>{i:=31<7?tH042?xh5<h0;6<uG1738yk43j3:1=vF>609~j72d290:wE?91:m61b=83;pD<8>;|l10`<728qC=;?4}o07b?6=9rB::<5rn373>5<6sA;==6sa24394?7|@8<:7p`=5383>4}O9?;0qc<:3;295~N6>81vb?;;:182M7192we>8;50;3xL4063td99;4?:0yK537<ug8>;7>51zJ224=zf;?36=4>{I355>{i:<31<7?tH042?xh5=h0;6<uG1738yk42j3:1=vF>609~j73d290:wE?91:m60b=83;pD<8>;|l11`<728qC=;?4}o06b?6=9rB::<5r}|CDF}5km0>on779d5~DED|8tJK\vsO@
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<symbol version="7" name="buffermem">
<symboltype>BLOCK</symboltype>
<timestamp>2012-2-28T17:6:39</timestamp>
<pin polarity="Input" x="0" y="80" name="addra[11:0]" />
<pin polarity="Input" x="0" y="112" name="dina[7:0]" />
<pin polarity="Input" x="0" y="144" name="ena" />
<pin polarity="Input" x="0" y="208" name="wea[0:0]" />
<pin polarity="Input" x="0" y="272" name="clka" />
<pin polarity="Input" x="0" y="432" name="addrb[9:0]" />
<pin polarity="Input" x="0" y="464" name="dinb[31:0]" />
<pin polarity="Input" x="0" y="496" name="enb" />
<pin polarity="Input" x="0" y="560" name="web[0:0]" />
<pin polarity="Input" x="0" y="624" name="clkb" />
<pin polarity="Output" x="576" y="80" name="douta[7:0]" />
<pin polarity="Output" x="576" y="368" name="doutb[31:0]" />
<graph>
<text style="fontsize:40;fontname:Arial" x="32" y="32">buffermem</text>
<rect width="512" x="32" y="32" height="1344" />
<line x2="32" y1="80" y2="80" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="80" type="pin addra[11:0]" />
<line x2="32" y1="112" y2="112" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="112" type="pin dina[7:0]" />
<line x2="32" y1="144" y2="144" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="144" type="pin ena" />
<line x2="32" y1="208" y2="208" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="208" type="pin wea[0:0]" />
<line x2="32" y1="272" y2="272" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="272" type="pin clka" />
<line x2="32" y1="432" y2="432" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="432" type="pin addrb[9:0]" />
<line x2="32" y1="464" y2="464" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="464" type="pin dinb[31:0]" />
<line x2="32" y1="496" y2="496" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="496" type="pin enb" />
<line x2="32" y1="560" y2="560" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="560" type="pin web[0:0]" />
<line x2="32" y1="624" y2="624" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="624" type="pin clkb" />
<line x2="544" y1="80" y2="80" style="linewidth:W" x1="576" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="80" type="pin douta[7:0]" />
<line x2="544" y1="368" y2="368" style="linewidth:W" x1="576" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="368" type="pin doutb[31:0]" />
</graph>
</symbol>
/*******************************************************************************
* This file is owned and controlled by Xilinx and must be used solely *
* for design, simulation, implementation and creation of design files *
* limited to Xilinx devices or technologies. Use with non-Xilinx *
* devices or technologies is expressly prohibited and immediately *
* terminates your license. *
* *
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY *
* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. 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. *
* *
* Xilinx products are not intended for use in life support appliances, *
* devices, or systems. Use in such applications are expressly *
* prohibited. *
* *
* (c) Copyright 1995-2012 Xilinx, Inc. *
* All rights reserved. *
*******************************************************************************/
// You must compile the wrapper file buffermem.v when simulating
// the core, buffermem. When compiling the wrapper file, be sure to
// reference the XilinxCoreLib Verilog simulation library. For detailed
// instructions, please refer to the "CORE Generator Help".
// The synthesis directives "translate_off/translate_on" specified below are
// supported by Xilinx, Mentor Graphics and Synplicity synthesis
// tools. Ensure they are correct for your synthesis tool(s).
`timescale 1ns/1ps
module buffermem(
clka,
ena,
wea,
addra,
dina,
douta,
clkb,
enb,
web,
addrb,
dinb,
doutb
);
input clka;
input ena;
input [0 : 0] wea;
input [11 : 0] addra;
input [7 : 0] dina;
output [7 : 0] douta;
input clkb;
input enb;
input [0 : 0] web;
input [9 : 0] addrb;
input [31 : 0] dinb;
output [31 : 0] doutb;
// synthesis translate_off
BLK_MEM_GEN_V6_2 #(
.C_ADDRA_WIDTH(12),
.C_ADDRB_WIDTH(10),
.C_ALGORITHM(1),
.C_AXI_ID_WIDTH(4),
.C_AXI_SLAVE_TYPE(0),
.C_AXI_TYPE(1),
.C_BYTE_SIZE(9),
.C_COMMON_CLK(1),
.C_DEFAULT_DATA("0"),
.C_DISABLE_WARN_BHV_COLL(0),
.C_DISABLE_WARN_BHV_RANGE(0),
.C_FAMILY("spartan6"),
.C_HAS_AXI_ID(0),
.C_HAS_ENA(1),
.C_HAS_ENB(1),
.C_HAS_INJECTERR(0),
.C_HAS_MEM_OUTPUT_REGS_A(0),
.C_HAS_MEM_OUTPUT_REGS_B(0),
.C_HAS_MUX_OUTPUT_REGS_A(0),
.C_HAS_MUX_OUTPUT_REGS_B(0),
.C_HAS_REGCEA(0),
.C_HAS_REGCEB(0),
.C_HAS_RSTA(0),
.C_HAS_RSTB(0),
.C_HAS_SOFTECC_INPUT_REGS_A(0),
.C_HAS_SOFTECC_OUTPUT_REGS_B(0),
.C_INIT_FILE_NAME("no_coe_file_loaded"),
.C_INITA_VAL("0"),
.C_INITB_VAL("0"),
.C_INTERFACE_TYPE(0),
.C_LOAD_INIT_FILE(0),
.C_MEM_TYPE(2),
.C_MUX_PIPELINE_STAGES(0),
.C_PRIM_TYPE(1),
.C_READ_DEPTH_A(4096),
.C_READ_DEPTH_B(1024),
.C_READ_WIDTH_A(8),
.C_READ_WIDTH_B(32),
.C_RST_PRIORITY_A("CE"),
.C_RST_PRIORITY_B("CE"),
.C_RST_TYPE("SYNC"),
.C_RSTRAM_A(0),
.C_RSTRAM_B(0),
.C_SIM_COLLISION_CHECK("ALL"),
.C_USE_BYTE_WEA(0),
.C_USE_BYTE_WEB(0),
.C_USE_DEFAULT_DATA(0),
.C_USE_ECC(0),
.C_USE_SOFTECC(0),
.C_WEA_WIDTH(1),
.C_WEB_WIDTH(1),
.C_WRITE_DEPTH_A(4096),
.C_WRITE_DEPTH_B(1024),
.C_WRITE_MODE_A("WRITE_FIRST"),
.C_WRITE_MODE_B("WRITE_FIRST"),
.C_WRITE_WIDTH_A(8),
.C_WRITE_WIDTH_B(32),
.C_XDEVICEFAMILY("spartan6")
)
inst (
.CLKA(clka),
.ENA(ena),
.WEA(wea),
.ADDRA(addra),
.DINA(dina),
.DOUTA(douta),
.CLKB(clkb),
.ENB(enb),
.WEB(web),
.ADDRB(addrb),
.DINB(dinb),
.DOUTB(doutb),
.RSTA(),
.REGCEA(),
.RSTB(),
.REGCEB(),
.INJECTSBITERR(),
.INJECTDBITERR(),
.SBITERR(),
.DBITERR(),
.RDADDRECC(),
.S_ACLK(),
.S_ARESETN(),
.S_AXI_AWID(),
.S_AXI_AWADDR(),
.S_AXI_AWLEN(),
.S_AXI_AWSIZE(),
.S_AXI_AWBURST(),
.S_AXI_AWVALID(),
.S_AXI_AWREADY(),
.S_AXI_WDATA(),
.S_AXI_WSTRB(),
.S_AXI_WLAST(),
.S_AXI_WVALID(),
.S_AXI_WREADY(),
.S_AXI_BID(),
.S_AXI_BRESP(),
.S_AXI_BVALID(),
.S_AXI_BREADY(),
.S_AXI_ARID(),
.S_AXI_ARADDR(),
.S_AXI_ARLEN(),
.S_AXI_ARSIZE(),
.S_AXI_ARBURST(),
.S_AXI_ARVALID(),
.S_AXI_ARREADY(),
.S_AXI_RID(),
.S_AXI_RDATA(),
.S_AXI_RRESP(),
.S_AXI_RLAST(),
.S_AXI_RVALID(),
.S_AXI_RREADY(),
.S_AXI_INJECTSBITERR(),
.S_AXI_INJECTDBITERR(),
.S_AXI_SBITERR(),
.S_AXI_DBITERR(),
.S_AXI_RDADDRECC()
);
// synthesis translate_on
endmodule
/*******************************************************************************
* This file is owned and controlled by Xilinx and must be used solely *
* for design, simulation, implementation and creation of design files *
* limited to Xilinx devices or technologies. Use with non-Xilinx *
* devices or technologies is expressly prohibited and immediately *
* terminates your license. *
* *
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY *
* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. 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. *
* *
* Xilinx products are not intended for use in life support appliances, *
* devices, or systems. Use in such applications are expressly *
* prohibited. *
* *
* (c) Copyright 1995-2012 Xilinx, Inc. *
* All rights reserved. *
*******************************************************************************/
/*******************************************************************************
* Generated from core with identifier: xilinx.com:ip:blk_mem_gen:6.2 *
* *
* The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port *
* Block Memory and Single Port Block Memory LogiCOREs, but is not a *
* direct drop-in replacement. It should be used in all new Xilinx *
* designs. The core supports RAM and ROM functions over a wide range of *
* widths and depths. Use this core to generate block memories with *
* symmetric or asymmetric read and write port widths, as well as cores *
* which can perform simultaneous write operations to separate *
* locations, and simultaneous read operations from the same location. *
* For more information on differences in interface and feature support *
* between this core and the Dual Port Block Memory and Single Port *
* Block Memory LogiCOREs, please consult the data sheet. *
*******************************************************************************/
// Interfaces:
// AXI_SLAVE_S_AXI
// AXILite_SLAVE_S_AXI
// The following must be inserted into your Verilog file for this
// core to be instantiated. Change the instance name and port connections
// (in parentheses) to your own signal names.
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
buffermem your_instance_name (
.clka(clka), // input clka
.ena(ena), // input ena
.wea(wea), // input [0 : 0] wea
.addra(addra), // input [11 : 0] addra
.dina(dina), // input [7 : 0] dina
.douta(douta), // output [7 : 0] douta
.clkb(clkb), // input clkb
.enb(enb), // input enb
.web(web), // input [0 : 0] web
.addrb(addrb), // input [9 : 0] addrb
.dinb(dinb), // input [31 : 0] dinb
.doutb(doutb) // output [31 : 0] doutb
);
// INST_TAG_END ------ End INSTANTIATION Template ---------
// You must compile the wrapper file buffermem.v when simulating
// the core, buffermem. When compiling the wrapper file, be sure to
// reference the XilinxCoreLib Verilog simulation library. For detailed
// instructions, please refer to the "CORE Generator Help".
##############################################################
#
# Xilinx Core Generator version 13.2
# Date: Tue Feb 28 17:05:52 2012
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:blk_mem_gen:6.2
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = Verilog
SET device = xc6slx45
SET devicefamily = spartan6
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = csg324
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -2
SET verilogsim = true
SET vhdlsim = false
# END Project Options
# BEGIN Select
SELECT Block_Memory_Generator xilinx.com:ip:blk_mem_gen:6.2
# END Select
# BEGIN Parameters
CSET additional_inputs_for_power_estimation=false
CSET algorithm=Minimum_Area
CSET assume_synchronous_clk=true
CSET axi_id_width=4
CSET axi_slave_type=Memory_Slave
CSET axi_type=AXI4_Full
CSET byte_size=9
CSET coe_file=no_coe_file_loaded
CSET collision_warnings=ALL
CSET component_name=buffermem
CSET disable_collision_warnings=false
CSET disable_out_of_range_warnings=false
CSET ecc=false
CSET ecctype=No_ECC
CSET enable_a=Use_ENA_Pin
CSET enable_b=Use_ENB_Pin
CSET error_injection_type=Single_Bit_Error_Injection
CSET fill_remaining_memory_locations=false
CSET interface_type=Native
CSET load_init_file=false
CSET memory_type=True_Dual_Port_RAM
CSET operating_mode_a=WRITE_FIRST
CSET operating_mode_b=WRITE_FIRST
CSET output_reset_value_a=0
CSET output_reset_value_b=0
CSET pipeline_stages=0
CSET port_a_clock=100
CSET port_a_enable_rate=100
CSET port_a_write_rate=50
CSET port_b_clock=100
CSET port_b_enable_rate=100
CSET port_b_write_rate=50
CSET primitive=8kx2
CSET read_width_a=8
CSET read_width_b=32
CSET register_porta_input_of_softecc=false
CSET register_porta_output_of_memory_core=false
CSET register_porta_output_of_memory_primitives=false
CSET register_portb_output_of_memory_core=false
CSET register_portb_output_of_memory_primitives=false
CSET register_portb_output_of_softecc=false
CSET remaining_memory_locations=0
CSET reset_memory_latch_a=false
CSET reset_memory_latch_b=false
CSET reset_priority_a=CE
CSET reset_priority_b=CE
CSET reset_type=SYNC
CSET softecc=false
CSET use_axi_id=false
CSET use_byte_write_enable=false
CSET use_error_injection_pins=false
CSET use_regcea_pin=false
CSET use_regceb_pin=false
CSET use_rsta_pin=false
CSET use_rstb_pin=false
CSET write_depth_a=4096
CSET write_width_a=8
CSET write_width_b=32
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2011-03-11T08:24:14.000Z
# END Extra information
GENERATE
# CRC: 1fb28621
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
<header>
<!-- ISE source project file created by Project Navigator. -->
<!-- -->
<!-- This file contains project source information including a list of -->
<!-- project source files, project and process properties. This file, -->
<!-- along with the project source files, is sufficient to open and -->
<!-- implement in ISE Project Navigator. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
</header>
<version xil_pn:ise_version="13.2" xil_pn:schema_version="2"/>
<files>
<file xil_pn:name="buffermem.ngc" xil_pn:type="FILE_NGC">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="1"/>
<association xil_pn:name="Implementation" xil_pn:seqID="1"/>
</file>
<file xil_pn:name="buffermem.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
<association xil_pn:name="PostMapSimulation" xil_pn:seqID="5"/>
<association xil_pn:name="PostRouteSimulation" xil_pn:seqID="5"/>
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="5"/>
</file>
</files>
<properties>
<property xil_pn:name="Auto Implementation Top" xil_pn:value="false" xil_pn:valueState="non-default"/>
<property xil_pn:name="Device" xil_pn:value="xc6slx45" xil_pn:valueState="non-default"/>
<property xil_pn:name="Device Family" xil_pn:value="Spartan6" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Stop View" xil_pn:value="PreSynthesis" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top" xil_pn:value="Module|buffermem" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top File" xil_pn:value="buffermem.ngc" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/buffermem" xil_pn:valueState="non-default"/>
<property xil_pn:name="Package" xil_pn:value="csg324" xil_pn:valueState="non-default"/>
<property xil_pn:name="Preferred Language" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="Project Generator" xil_pn:value="CoreGen" xil_pn:valueState="non-default"/>
<property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/>
<property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/>
<property xil_pn:name="Speed Grade" xil_pn:value="-2" xil_pn:valueState="non-default"/>
<property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/>
<property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/>
<property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="non-default"/>
<!-- -->
<!-- The following properties are for internal use only. These should not be modified.-->
<!-- -->
<property xil_pn:name="PROP_DesignName" xil_pn:value="buffermem" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2012-02-28T12:06:44" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="154A8C82339948B49E3C581C44A6E851" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
</properties>
<bindings/>
<libraries/>
<autoManagedFiles>
<!-- The following files are identified by `include statements in verilog -->
<!-- source files and are automatically managed by Project Navigator. -->
<!-- -->
<!-- Do not hand-edit this section, as it will be overwritten when the -->
<!-- project is analyzed based on files automatically identified as -->
<!-- include files. -->
</autoManagedFiles>
</project>
# Output products list for <buffermem>
blk_mem_gen_ds512.pdf
blk_mem_gen_v6_2_readme.txt
buffermem.asy
buffermem.gise
buffermem.ngc
buffermem.sym
buffermem.v
buffermem.veo
buffermem.xco
buffermem.xise
buffermem_flist.txt
buffermem_ste\example_design\bmg_wrapper.vhd
buffermem_ste\example_design\buffermem_top.ucf
buffermem_ste\example_design\buffermem_top.vhd
buffermem_ste\example_design\buffermem_top.xdc
buffermem_ste\implement\implement.sh
buffermem_ste\implement\planAhead_rdn.bat
buffermem_ste\implement\planAhead_rdn.sh
buffermem_ste\implement\planAhead_rdn.tcl
buffermem_ste\implement\xst.prj
buffermem_ste\implement\xst.scr
buffermem_xmdf.tcl
summary.log
--------------------------------------------------------------------------------
--
-- BLK MEM GEN v6.2 Core - Top-level wrapper
--
--------------------------------------------------------------------------------
--
-- (c) Copyright 2006-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.
--
--------------------------------------------------------------------------------
--
-- Filename: bmg_wrapper.vhd
--
-- Description:
-- This is the top-level BMG wrapper (over BMG core).
--
--------------------------------------------------------------------------------
-- Author: IP Solutions Division
--
-- History: August 31, 2005 - First Release
--------------------------------------------------------------------------------
--
-- Configured Core Parameter Values:
-- (Refer to the SIM Parameters table in the datasheet for more information on
-- the these parameters.)
-- C_FAMILY : spartan6
-- C_XDEVICEFAMILY : spartan6
-- C_INTERFACE_TYPE : 0
-- C_AXI_TYPE : 1
-- C_AXI_SLAVE_TYPE : 0
-- C_AXI_ID_WIDTH : 4
-- C_MEM_TYPE : 2
-- C_BYTE_SIZE : 9
-- C_ALGORITHM : 1
-- C_PRIM_TYPE : 1
-- C_LOAD_INIT_FILE : 0
-- C_INIT_FILE_NAME : no_coe_file_loaded
-- C_USE_DEFAULT_DATA : 0
-- C_DEFAULT_DATA : 0
-- C_RST_TYPE : SYNC
-- C_HAS_RSTA : 0
-- C_RST_PRIORITY_A : CE
-- C_RSTRAM_A : 0
-- C_INITA_VAL : 0
-- C_HAS_ENA : 1
-- C_HAS_REGCEA : 0
-- C_USE_BYTE_WEA : 0
-- C_WEA_WIDTH : 1
-- C_WRITE_MODE_A : WRITE_FIRST
-- C_WRITE_WIDTH_A : 8
-- C_READ_WIDTH_A : 8
-- C_WRITE_DEPTH_A : 4096
-- C_READ_DEPTH_A : 4096
-- C_ADDRA_WIDTH : 12
-- C_HAS_RSTB : 0
-- C_RST_PRIORITY_B : CE
-- C_RSTRAM_B : 0
-- C_INITB_VAL : 0
-- C_HAS_ENB : 1
-- C_HAS_REGCEB : 0
-- C_USE_BYTE_WEB : 0
-- C_WEB_WIDTH : 1
-- C_WRITE_MODE_B : WRITE_FIRST
-- C_WRITE_WIDTH_B : 32
-- C_READ_WIDTH_B : 32
-- C_WRITE_DEPTH_B : 1024
-- C_READ_DEPTH_B : 1024
-- C_ADDRB_WIDTH : 10
-- C_HAS_MEM_OUTPUT_REGS_A : 0
-- C_HAS_MEM_OUTPUT_REGS_B : 0
-- C_HAS_MUX_OUTPUT_REGS_A : 0
-- C_HAS_MUX_OUTPUT_REGS_B : 0
-- C_HAS_SOFTECC_INPUT_REGS_A : 0
-- C_HAS_SOFTECC_OUTPUT_REGS_B : 0
-- C_MUX_PIPELINE_STAGES : 0
-- C_USE_ECC : 0
-- C_USE_SOFTECC : 0
-- C_HAS_INJECTERR : 0
-- C_SIM_COLLISION_CHECK : ALL
-- C_COMMON_CLK : 1
-- C_DISABLE_WARN_BHV_COLL : 0
-- C_DISABLE_WARN_BHV_RANGE : 0
--------------------------------------------------------------------------------
-- Library Declarations
--------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
LIBRARY UNISIM;
USE UNISIM.VCOMPONENTS.ALL;
--------------------------------------------------------------------------------
-- Entity Declaration
--------------------------------------------------------------------------------
ENTITY bmg_wrapper IS
PORT (
--Port A
CLKA : IN STD_LOGIC;
RSTA : IN STD_LOGIC; --opt port
ENA : IN STD_LOGIC; --optional port
REGCEA : IN STD_LOGIC; --optional port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
--Port B
CLKB : IN STD_LOGIC;
RSTB : IN STD_LOGIC; --opt port
ENB : IN STD_LOGIC; --optional port
REGCEB : IN STD_LOGIC; --optional port
WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRB : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
DINB : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
--ECC
INJECTSBITERR : IN STD_LOGIC; --optional port
INJECTDBITERR : IN STD_LOGIC; --optional port
SBITERR : OUT STD_LOGIC; --optional port
DBITERR : OUT STD_LOGIC; --optional port
RDADDRECC : OUT STD_LOGIC_VECTOR(9 DOWNTO 0); --optional port
-- AXI BMG Input and Output Port Declarations
-- AXI Global Signals
S_ACLK : IN STD_LOGIC;
S_AXI_AWID : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S_AXI_AWADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_AWLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_AWSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
S_AXI_AWBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_AWVALID : IN STD_LOGIC;
S_AXI_AWREADY : OUT STD_LOGIC;
S_AXI_WDATA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_WSTRB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
S_AXI_WLAST : IN STD_LOGIC;
S_AXI_WVALID : IN STD_LOGIC;
S_AXI_WREADY : OUT STD_LOGIC;
S_AXI_BID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0');
S_AXI_BRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_BVALID : OUT STD_LOGIC;
S_AXI_BREADY : IN STD_LOGIC;
-- AXI Full/Lite Slave Read (Write side)
S_AXI_ARID : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S_AXI_ARADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_ARLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_ARSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
S_AXI_ARBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_ARVALID : IN STD_LOGIC;
S_AXI_ARREADY : OUT STD_LOGIC;
S_AXI_RID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0');
S_AXI_RDATA : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_RRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_RLAST : OUT STD_LOGIC;
S_AXI_RVALID : OUT STD_LOGIC;
S_AXI_RREADY : IN STD_LOGIC;
-- AXI Full/Lite Sideband Signals
S_AXI_INJECTSBITERR : IN STD_LOGIC;
S_AXI_INJECTDBITERR : IN STD_LOGIC;
S_AXI_SBITERR : OUT STD_LOGIC;
S_AXI_DBITERR : OUT STD_LOGIC;
S_AXI_RDADDRECC : OUT STD_LOGIC_VECTOR(9 DOWNTO 0);
S_ARESETN : IN STD_LOGIC
);
END bmg_wrapper;
ARCHITECTURE xilinx OF bmg_wrapper IS
COMPONENT buffermem_top IS
PORT (
--Port A
ENA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKA : IN STD_LOGIC;
--Port B
ENB : IN STD_LOGIC; --opt port
WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRB : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
DINB : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
CLKB : IN STD_LOGIC
);
END COMPONENT;
BEGIN
bmg0 : buffermem_top
PORT MAP (
--Port A
ENA => ENA,
WEA => WEA,
ADDRA => ADDRA,
DINA => DINA,
DOUTA => DOUTA,
CLKA => CLKA,
--Port B
ENB => ENB,
WEB => WEB,
ADDRB => ADDRB,
DINB => DINB,
DOUTB => DOUTB,
CLKB => CLKB
);
END xilinx;
################################################################################
#
# (c) Copyright 2002 - 2010 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.
#
################################################################################
# Tx Core Period Constraint. This constraint can be modified, and is
# valid as long as it is met after place and route.
NET "CLKA" TNM_NET = "CLKA";
NET "CLKB" TNM_NET = "CLKB";
TIMESPEC "TS_CLKA" = PERIOD "CLKA" 25 MHZ;
TIMESPEC "TS_CLKB" = PERIOD "CLKB" 25 MHZ;
################################################################################
--------------------------------------------------------------------------------
--
-- BLK MEM GEN v6.2 Core - Top-level core wrapper
--
--------------------------------------------------------------------------------
--
-- (c) Copyright 2006-2010 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.
--------------------------------------------------------------------------------
--
-- Filename: bmg_wrapper.vhd
--
-- Description:
-- This is the actual BMG core wrapper.
--
--------------------------------------------------------------------------------
-- Author: IP Solutions Division
--
-- History: August 31, 2005 - First Release
--------------------------------------------------------------------------------
--
--------------------------------------------------------------------------------
-- Library Declarations
--------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
LIBRARY UNISIM;
USE UNISIM.VCOMPONENTS.ALL;
--------------------------------------------------------------------------------
-- Entity Declaration
--------------------------------------------------------------------------------
ENTITY buffermem_top IS
PORT (
--Inputs - Port A
ENA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKA : IN STD_LOGIC;
--Inputs - Port B
ENB : IN STD_LOGIC; --opt port
WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRB : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
DINB : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
CLKB : IN STD_LOGIC
);
END buffermem_top;
ARCHITECTURE xilinx OF buffermem_top IS
COMPONENT BUFG IS
PORT (
I : IN STD_ULOGIC;
O : OUT STD_ULOGIC
);
END COMPONENT;
COMPONENT buffermem IS
PORT (
--Port A
ENA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKA : IN STD_LOGIC;
--Port B
ENB : IN STD_LOGIC; --opt port
WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRB : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
DINB : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
CLKB : IN STD_LOGIC
);
END COMPONENT;
SIGNAL CLKA_buf : STD_LOGIC;
SIGNAL CLKB_buf : STD_LOGIC;
SIGNAL S_ACLK_buf : STD_LOGIC;
BEGIN
bufg_A : BUFG
PORT MAP (
I => CLKA,
O => CLKA_buf
);
bufg_B : BUFG
PORT MAP (
I => CLKB,
O => CLKB_buf
);
bmg0 : buffermem
PORT MAP (
--Port A
ENA => ENA,
WEA => WEA,
ADDRA => ADDRA,
DINA => DINA,
DOUTA => DOUTA,
CLKA => CLKA_buf,
--Port B
ENB => ENB,
WEB => WEB,
ADDRB => ADDRB,
DINB => DINB,
DOUTB => DOUTB,
CLKB => CLKB_buf
);
END xilinx;
################################################################################
#
# (c) Copyright 2002 - 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.
#
################################################################################
# Core Period Constraint. This constraint can be modified, and is
# valid as long as it is met after place and route.
create_clock -name "TS_CLKA" -period 20.0 [ get_ports CLKA ]
create_clock -name "TS_CLKB" -period 20.0 [ get_ports CLKB ]
################################################################################
#!/bin/sh
# Clean up the results directory
rm -rf results
mkdir results
#Synthesize the Wrapper Files
echo 'Synthesizing XST wrapper file (core_top.vhd) with XST';
echo 'Synthesizing example design with XST';
xst -ifn xst.scr
cp buffermem_top.ngc ./results/
# Copy the netlist generated by Coregen
echo 'Copying files from the netlist directory to the results directory'
cp ../../buffermem.ngc results/
# Copy the constraints files generated by Coregen
echo 'Copying files from constraints directory to results directory'
cp ../example_design/buffermem_top.ucf results/
cd results
echo 'Running ngdbuild'
ngdbuild -p xc6slx45-csg324-2 buffermem_top
echo 'Running map'
map buffermem_top -o mapped.ncd -pr i
echo 'Running par'
par mapped.ncd routed.ncd
echo 'Running trce'
trce -e 10 routed.ncd mapped.pcf -o routed
echo 'Running design through bitgen'
bitgen -w routed
echo 'Running netgen to create gate level Verilog model'
netgen -ofmt verilog -sim -tm buffermem_top -pcf mapped.pcf -w routed.ncd routed.v
cp routed.sdf ../../production/timing/
#!/bin/sh
rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved.
rem
rem This file contains confidential and proprietary information
rem of Xilinx, Inc. and is protected under U.S. and
rem international copyright and other intellectual property
rem laws.
rem
rem DISCLAIMER
rem This disclaimer is not a license and does not grant any
rem rights to the materials distributed herewith. Except as
rem otherwise provided in a valid license issued to you by
rem Xilinx, and to the maximum extent permitted by applicable
rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
rem (2) Xilinx shall not be liable (whether in contract or tort,
rem including negligence, or under any other theory of
rem liability) for any loss or damage of any kind or nature
rem related to, arising under or in connection with these
rem materials, including for any direct, or any indirect,
rem special, incidental, or consequential loss or damage
rem (including loss of data, profits, goodwill, or any type of
rem loss or damage suffered as a result of any action brought
rem by a third party) even if such damage or loss was
rem reasonably foreseeable or Xilinx had been advised of the
rem possibility of the same.
rem
rem CRITICAL APPLICATIONS
rem Xilinx products are not designed or intended to be fail-
rem safe, or for use in any application requiring fail-safe
rem performance, such as life-support or safety devices or
rem systems, Class III medical devices, nuclear facilities,
rem applications related to the deployment of airbags, or any
rem other applications that could lead to death, personal
rem injury, or severe property or environmental damage
rem (individually and collectively, "Critical
rem Applications"). Customer assumes the sole risk and
rem liability of any use of Xilinx products in Critical
rem Applications, subject only to applicable laws and
rem regulations governing limitations on product liability.
rem
rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
rem PART OF THIS FILE AT ALL TIMES.
rem -----------------------------------------------------------------------------
rem Script to synthesize and implement the Coregen FIFO Generator
rem -----------------------------------------------------------------------------
rmdir /S /Q results
mkdir results
cd results
copy ..\..\..\tmp\buffermem.edf .
planAhead -mode batch -source ..\planAhead_rdn.tcl
#!/bin/sh
# (c) Copyright 2009 - 2010 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.
#-----------------------------------------------------------------------------
# Script to synthesize and implement the Coregen FIFO Generator
#-----------------------------------------------------------------------------
rm -rf results
mkdir results
cd results
cp ../../../tmp/buffermem.edf .
planAhead -mode batch -source ../planAhead_rdn.tcl
# (c) Copyright 2009 - 2010 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.
set device xc6slx45csg324-2
set projName buffermem
set design buffermem
set projDir [file dirname [info script]]
create_project $projName $projDir/results/$projName -part $device -force
set_property design_mode RTL [current_fileset -srcset]
set top_module buffermem_top
add_files -norecurse {../../example_design/buffermem_top.vhd}
add_files -norecurse {./buffermem.edf}
import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/buffermem_top.xdc}
set_property top buffermem_top [get_property srcset [current_run]]
synth_design
opt_design
place_design
route_design
write_sdf -rename_top_module buffermem_top -file routed.sdf
write_verilog -nolib -mode sim -sdf_anno false -rename_top_module buffermem_top routed.v
report_timing -nworst 30 -path_type full -file routed.twr
report_drc -file routed.drc
#write_bitstream
run
-ifmt VHDL
-ent buffermem_top
-p xc6slx45-csg324-2
-ifn xst.prj
-write_timing_constraints No
-iobuf YES
-max_fanout 100
-ofn buffermem_top
-ofmt NGC
-bus_delimiter ()
-hierarchy_separator /
-case Maintain
# The package naming convention is <core_name>_xmdf
package provide buffermem_xmdf 1.0
# This includes some utilities that support common XMDF operations
package require utilities_xmdf
# Define a namespace for this package. The name of the name space
# is <core_name>_xmdf
namespace eval ::buffermem_xmdf {
# Use this to define any statics
}
# Function called by client to rebuild the params and port arrays
# Optional when the use context does not require the param or ports
# arrays to be available.
proc ::buffermem_xmdf::xmdfInit { instance } {
# Variable containing name of library into which module is compiled
# Recommendation: <module_name>
# Required
utilities_xmdf::xmdfSetData $instance Module Attributes Name buffermem
}
# ::buffermem_xmdf::xmdfInit
# Function called by client to fill in all the xmdf* data variables
# based on the current settings of the parameters
proc ::buffermem_xmdf::xmdfApplyParams { instance } {
set fcount 0
# Array containing libraries that are assumed to exist
# Examples include unisim and xilinxcorelib
# Optional
# In this example, we assume that the unisim library will
# be available to the simulation and synthesis tool
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_ds512.pdf
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v6_2_readme.txt
utilities_xmdf::xmdfSetData $instance FileSet $fcount type text
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem.asy
utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem.ngc
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem.sym
utilities_xmdf::xmdfSetData $instance FileSet $fcount type symbol
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem.v
utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem.veo
utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem.xco
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/example_design/bmg_wrapper.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/example_design/buffermem_top.ucf
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/example_design/buffermem_top.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/example_design/buffermem_top.xdc
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/implement/implement.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/implement/planAhead_rdn.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/implement/planAhead_rdn.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/implement/planAhead_rdn.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/implement/xst.prj
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_ste/implement/xst.scr
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path buffermem_xmdf.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path summary.log
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module buffermem
incr fcount
}
# ::gen_comp_name_xmdf::xmdfApplyParams
<?xml version="1.0" encoding="UTF-8"?>
<spirit:design xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xilinx="http://www.xilinx.com" >
<spirit:vendor>xilinx.com</spirit:vendor>
<spirit:library>project</spirit:library>
<spirit:name>coregen</spirit:name>
<spirit:version>1.0</spirit:version>
<spirit:componentInstances>
<spirit:componentInstance>
<spirit:instanceName>buffermem</spirit:instanceName>
<spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="blk_mem_gen" spirit:version="6.2" />
<spirit:configurableElementValues>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COMPONENT_NAME">buffermem</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERFACE_TYPE">Native</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_TYPE">AXI4_Full</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_SLAVE_TYPE">Memory_Slave</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_AXI_ID">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_ID_WIDTH">4</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MEMORY_TYPE">True_Dual_Port_RAM</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ECCTYPE">No_ECC</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SOFTECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_ERROR_INJECTION_PINS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ERROR_INJECTION_TYPE">Single_Bit_Error_Injection</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_BYTE_WRITE_ENABLE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.BYTE_SIZE">9</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ALGORITHM">Minimum_Area</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMITIVE">8kx2</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ASSUME_SYNCHRONOUS_CLK">true</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_WIDTH_A">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_DEPTH_A">4096</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_WIDTH_A">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OPERATING_MODE_A">WRITE_FIRST</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_A">Use_ENA_Pin</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_WIDTH_B">32</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_WIDTH_B">32</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OPERATING_MODE_B">WRITE_FIRST</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_B">Use_ENB_Pin</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTA_OUTPUT_OF_MEMORY_PRIMITIVES">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTA_OUTPUT_OF_MEMORY_CORE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_REGCEA_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTB_OUTPUT_OF_MEMORY_PRIMITIVES">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTB_OUTPUT_OF_MEMORY_CORE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_REGCEB_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTA_INPUT_OF_SOFTECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTB_OUTPUT_OF_SOFTECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PIPELINE_STAGES">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.LOAD_INIT_FILE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COE_FILE">no_coe_file_loaded</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FILL_REMAINING_MEMORY_LOCATIONS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REMAINING_MEMORY_LOCATIONS">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RSTA_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_MEMORY_LATCH_A">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PRIORITY_A">CE</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OUTPUT_RESET_VALUE_A">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RSTB_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_MEMORY_LATCH_B">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PRIORITY_B">CE</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OUTPUT_RESET_VALUE_B">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">SYNC</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ADDITIONAL_INPUTS_FOR_POWER_ESTIMATION">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_A_CLOCK">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_A_WRITE_RATE">50</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_B_CLOCK">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_B_WRITE_RATE">50</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_A_ENABLE_RATE">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_B_ENABLE_RATE">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COLLISION_WARNINGS">ALL</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_COLLISION_WARNINGS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_OUT_OF_RANGE_WARNINGS">false</spirit:configurableElementValue>
</spirit:configurableElementValues>
<spirit:vendorExtensions>
<xilinx:instanceProperties xmlns:xilinx="http://www.xilinx.com">
<xilinx:projectOptions>
<xilinx:projectName>coregen</xilinx:projectName>
<xilinx:outputDirectory>./</xilinx:outputDirectory>
<xilinx:workingDirectory>./tmp/</xilinx:workingDirectory>
<xilinx:subWorkingDirectory>./tmp/_cg/</xilinx:subWorkingDirectory>
</xilinx:projectOptions>
<xilinx:part>
<xilinx:device>xc6slx45</xilinx:device>
<xilinx:deviceFamily>spartan6</xilinx:deviceFamily>
<xilinx:package>csg324</xilinx:package>
<xilinx:speedGrade>-2</xilinx:speedGrade>
</xilinx:part>
<xilinx:flowOptions>
<xilinx:busFormat>BusFormatAngleBracketNotRipped</xilinx:busFormat>
<xilinx:designEntry>Verilog</xilinx:designEntry>
<xilinx:asySymbol>true</xilinx:asySymbol>
<xilinx:flowVendor>Other</xilinx:flowVendor>
<xilinx:addPads>false</xilinx:addPads>
<xilinx:removeRPMs>false</xilinx:removeRPMs>
<xilinx:createNDF>false</xilinx:createNDF>
<xilinx:implementationFileType>Ngc</xilinx:implementationFileType>
<xilinx:formalVerification>false</xilinx:formalVerification>
</xilinx:flowOptions>
<xilinx:simulationOptions>
<xilinx:simulationModel>Behavioral</xilinx:simulationModel>
<xilinx:simulationLanguage>Verilog</xilinx:simulationLanguage>
<xilinx:foundationSym>false</xilinx:foundationSym>
</xilinx:simulationOptions>
<xilinx:packageInfo>
<xilinx:sourceCoreCreationDate>2011-03-11T08:24:14.000Z</xilinx:sourceCoreCreationDate>
</xilinx:packageInfo>
</xilinx:instanceProperties>
</spirit:vendorExtensions>
</spirit:componentInstance>
<spirit:componentInstance>
<spirit:instanceName>spiloopmem</spirit:instanceName>
<spirit:componentRef spirit:vendor="xilinx.com" spirit:library="ip" spirit:name="blk_mem_gen" spirit:version="6.2" />
<spirit:configurableElementValues>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COMPONENT_NAME">spiloopmem</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERFACE_TYPE">Native</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_TYPE">AXI4_Full</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_SLAVE_TYPE">Memory_Slave</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_AXI_ID">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.AXI_ID_WIDTH">4</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.MEMORY_TYPE">Simple_Dual_Port_RAM</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ECCTYPE">No_ECC</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.SOFTECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_ERROR_INJECTION_PINS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ERROR_INJECTION_TYPE">Single_Bit_Error_Injection</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_BYTE_WRITE_ENABLE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.BYTE_SIZE">9</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ALGORITHM">Minimum_Area</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PRIMITIVE">8kx2</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ASSUME_SYNCHRONOUS_CLK">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_WIDTH_A">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_DEPTH_A">4096</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_WIDTH_A">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OPERATING_MODE_A">WRITE_FIRST</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_A">Use_ENA_Pin</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.WRITE_WIDTH_B">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.READ_WIDTH_B">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OPERATING_MODE_B">WRITE_FIRST</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_B">Use_ENB_Pin</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTA_OUTPUT_OF_MEMORY_PRIMITIVES">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTA_OUTPUT_OF_MEMORY_CORE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_REGCEA_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTB_OUTPUT_OF_MEMORY_PRIMITIVES">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTB_OUTPUT_OF_MEMORY_CORE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_REGCEB_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTA_INPUT_OF_SOFTECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REGISTER_PORTB_OUTPUT_OF_SOFTECC">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PIPELINE_STAGES">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.LOAD_INIT_FILE">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COE_FILE">no_coe_file_loaded</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FILL_REMAINING_MEMORY_LOCATIONS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.REMAINING_MEMORY_LOCATIONS">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RSTA_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_MEMORY_LATCH_A">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PRIORITY_A">CE</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OUTPUT_RESET_VALUE_A">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.USE_RSTB_PIN">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_MEMORY_LATCH_B">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_PRIORITY_B">CE</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.OUTPUT_RESET_VALUE_B">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.RESET_TYPE">SYNC</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ADDITIONAL_INPUTS_FOR_POWER_ESTIMATION">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_A_CLOCK">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_A_WRITE_RATE">50</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_B_CLOCK">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_B_WRITE_RATE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_A_ENABLE_RATE">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.PORT_B_ENABLE_RATE">100</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.COLLISION_WARNINGS">ALL</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_COLLISION_WARNINGS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_OUT_OF_RANGE_WARNINGS">false</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_FAMILY">spartan6</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_XDEVICEFAMILY">spartan6</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_ELABORATION_DIR">C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INTERFACE_TYPE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_AXI_TYPE">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_AXI_SLAVE_TYPE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_AXI_ID">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_AXI_ID_WIDTH">4</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MEM_TYPE">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_BYTE_SIZE">9</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_ALGORITHM">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_PRIM_TYPE">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_LOAD_INIT_FILE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INIT_FILE_NAME">no_coe_file_loaded</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_DEFAULT_DATA">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DEFAULT_DATA">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RST_TYPE">SYNC</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_RSTA">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RST_PRIORITY_A">CE</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RSTRAM_A">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INITA_VAL">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_ENA">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_REGCEA">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_BYTE_WEA">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WEA_WIDTH">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WRITE_MODE_A">WRITE_FIRST</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WRITE_WIDTH_A">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_READ_WIDTH_A">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WRITE_DEPTH_A">4096</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_READ_DEPTH_A">4096</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_ADDRA_WIDTH">12</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_RSTB">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RST_PRIORITY_B">CE</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_RSTRAM_B">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_INITB_VAL">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_ENB">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_REGCEB">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_BYTE_WEB">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WEB_WIDTH">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WRITE_MODE_B">WRITE_FIRST</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WRITE_WIDTH_B">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_READ_WIDTH_B">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_WRITE_DEPTH_B">4096</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_READ_DEPTH_B">4096</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_ADDRB_WIDTH">12</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_MEM_OUTPUT_REGS_A">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_MEM_OUTPUT_REGS_B">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_MUX_OUTPUT_REGS_A">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_MUX_OUTPUT_REGS_B">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_MUX_PIPELINE_STAGES">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_SOFTECC_INPUT_REGS_A">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_SOFTECC_OUTPUT_REGS_B">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_SOFTECC">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_ECC">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_HAS_INJECTERR">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SIM_COLLISION_CHECK">ALL</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_COMMON_CLK">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DISABLE_WARN_BHV_COLL">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_DISABLE_WARN_BHV_RANGE">0</spirit:configurableElementValue>
</spirit:configurableElementValues>
<spirit:vendorExtensions>
<xilinx:instanceProperties xmlns:xilinx="http://www.xilinx.com">
<xilinx:projectOptions>
<xilinx:projectName>coregen</xilinx:projectName>
<xilinx:outputDirectory>./</xilinx:outputDirectory>
<xilinx:workingDirectory>./tmp/</xilinx:workingDirectory>
<xilinx:subWorkingDirectory>./tmp/_cg/</xilinx:subWorkingDirectory>
</xilinx:projectOptions>
<xilinx:part>
<xilinx:device>xc6slx45</xilinx:device>
<xilinx:deviceFamily>spartan6</xilinx:deviceFamily>
<xilinx:package>csg324</xilinx:package>
<xilinx:speedGrade>-2</xilinx:speedGrade>
</xilinx:part>
<xilinx:flowOptions>
<xilinx:busFormat>BusFormatAngleBracketNotRipped</xilinx:busFormat>
<xilinx:designEntry>Verilog</xilinx:designEntry>
<xilinx:asySymbol>true</xilinx:asySymbol>
<xilinx:flowVendor>Other</xilinx:flowVendor>
<xilinx:addPads>false</xilinx:addPads>
<xilinx:removeRPMs>false</xilinx:removeRPMs>
<xilinx:createNDF>false</xilinx:createNDF>
<xilinx:implementationFileType>Ngc</xilinx:implementationFileType>
<xilinx:formalVerification>false</xilinx:formalVerification>
</xilinx:flowOptions>
<xilinx:simulationOptions>
<xilinx:simulationModel>Behavioral</xilinx:simulationModel>
<xilinx:simulationLanguage>Verilog</xilinx:simulationLanguage>
<xilinx:foundationSym>false</xilinx:foundationSym>
</xilinx:simulationOptions>
<xilinx:packageInfo>
<xilinx:sourceCoreCreationDate>2011-03-11T08:24:14.000Z</xilinx:sourceCoreCreationDate>
</xilinx:packageInfo>
</xilinx:instanceProperties>
<xilinx:generationHistory>
<xilinx:fileSet>
<xilinx:name>apply_current_project_options_generator</xilinx:name>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>customization_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./summary.log</xilinx:name>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:50 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x5BD51164</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>model_parameter_resolution_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./summary.log</xilinx:name>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:54 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x5BD51164</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>ip_xco_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem.xco</xilinx:name>
<xilinx:userFileType>xco</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:54 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xEE47DCC6</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>associated_files_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./blk_mem_gen_ds512.pdf</xilinx:name>
<xilinx:userFileType>pdf</xilinx:userFileType>
<xilinx:timeStamp>Tue Jun 21 05:21:31 GMT 2011</xilinx:timeStamp>
<xilinx:checkSum>0xA43B8952</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./blk_mem_gen_v6_2_readme.txt</xilinx:name>
<xilinx:userFileType>txt</xilinx:userFileType>
<xilinx:timeStamp>Tue Jun 21 05:21:31 GMT 2011</xilinx:timeStamp>
<xilinx:checkSum>0x399E1D72</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>ejava_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/example_design/bmg_wrapper.vhd</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>vhdl</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x7F99DB77</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/example_design/spiloopmem_top.ucf</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>ucf</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x8915DFA1</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/example_design/spiloopmem_top.vhd</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>vhdl</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xAFD5224E</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/example_design/spiloopmem_top.xdc</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>xdc</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x78E2D49A</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/implement/implement.sh</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x452D832D</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/implement/planAhead_rdn.bat</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x9360D2FC</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/implement/planAhead_rdn.sh</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x46307551</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/implement/planAhead_rdn.tcl</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>tcl</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xEA63E4A4</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/implement/xst.prj</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xE2E3ED6D</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem_ste/implement/xst.scr</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:04:55 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x04885ED0</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>ngc_netlist_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem.ngc</xilinx:name>
<xilinx:userFileType>ngc</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:31 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x64C2FFF1</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>obfuscate_netlist_generator</xilinx:name>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>padded_implementation_netlist_generator</xilinx:name>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>instantiation_template_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem.veo</xilinx:name>
<xilinx:userFileType>veo</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:33 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xF74D6B91</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>structural_simulation_model_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem.v</xilinx:name>
<xilinx:userFileType>verilog</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:33 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xC7F34980</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>asy_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem.asy</xilinx:name>
<xilinx:userFileType>asy</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:39 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x83946D8F</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./summary.log</xilinx:name>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:39 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x5BD51164</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>xmdf_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem_xmdf.tcl</xilinx:name>
<xilinx:userFileType>tclXmdf</xilinx:userFileType>
<xilinx:userFileType>tcl</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:39 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xD51D4C14</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>ise_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./_xmsgs/pn_parser.xmsgs</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>unknown</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:42 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0x24C9CB1C</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem.gise</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>gise</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:43 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xF8869E9A</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
<xilinx:file>
<xilinx:name>./spiloopmem.xise</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>xise</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:43 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xAB45B7A7</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>deliver_readme_generator</xilinx:name>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>flist_generator</xilinx:name>
<xilinx:file>
<xilinx:name>./spiloopmem_flist.txt</xilinx:name>
<xilinx:userFileType>ignore</xilinx:userFileType>
<xilinx:userFileType>txtFlist</xilinx:userFileType>
<xilinx:userFileType>txt</xilinx:userFileType>
<xilinx:timeStamp>Wed Mar 07 22:05:43 GMT 2012</xilinx:timeStamp>
<xilinx:checkSum>0xCE30C720</xilinx:checkSum>
<xilinx:generationId>generationid_615106653</xilinx:generationId>
</xilinx:file>
</xilinx:fileSet>
<xilinx:fileSet>
<xilinx:name>view_readme_generator</xilinx:name>
</xilinx:fileSet>
</xilinx:generationHistory>
</spirit:vendorExtensions>
</spirit:componentInstance>
</spirit:componentInstances>
<spirit:vendorExtensions>
<xilinx:instanceProperties>
<xilinx:projectOptions>
<xilinx:projectName>coregen</xilinx:projectName>
<xilinx:outputDirectory>./</xilinx:outputDirectory>
<xilinx:workingDirectory>./tmp/</xilinx:workingDirectory>
<xilinx:subWorkingDirectory>./tmp/_cg/</xilinx:subWorkingDirectory>
</xilinx:projectOptions>
<xilinx:part>
<xilinx:device>xc6slx45</xilinx:device>
<xilinx:deviceFamily>spartan6</xilinx:deviceFamily>
<xilinx:package>csg324</xilinx:package>
<xilinx:speedGrade>-2</xilinx:speedGrade>
</xilinx:part>
<xilinx:flowOptions>
<xilinx:busFormat>BusFormatAngleBracketNotRipped</xilinx:busFormat>
<xilinx:designEntry>Verilog</xilinx:designEntry>
<xilinx:asySymbol>true</xilinx:asySymbol>
<xilinx:flowVendor>Other</xilinx:flowVendor>
<xilinx:addPads>false</xilinx:addPads>
<xilinx:removeRPMs>false</xilinx:removeRPMs>
<xilinx:createNDF>false</xilinx:createNDF>
<xilinx:implementationFileType>Ngc</xilinx:implementationFileType>
<xilinx:formalVerification>false</xilinx:formalVerification>
</xilinx:flowOptions>
<xilinx:simulationOptions>
<xilinx:simulationModel>Behavioral</xilinx:simulationModel>
<xilinx:simulationLanguage>Verilog</xilinx:simulationLanguage>
<xilinx:foundationSym>false</xilinx:foundationSym>
</xilinx:simulationOptions>
</xilinx:instanceProperties>
</spirit:vendorExtensions>
</spirit:design>
SET busformat = BusFormatAngleBracketNotRipped
SET designentry = Verilog
SET device = xc6slx45
SET devicefamily = spartan6
SET flowvendor = Other
SET package = csg324
SET speedgrade = -2
SET verilogsim = true
SET vhdlsim = false
##
## Core Generator Run Script, generator for Project Navigator create command
##
proc findRtfPath { relativePath } {
set xilenv ""
if { [info exists ::env(XILINX) ] } {
if { [info exists ::env(MYXILINX)] } {
set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ]
} else {
set xilenv $::env(XILINX)
}
}
foreach path [ split $xilenv $::xilinx::path_sep ] {
set fullPath [ file join $path $relativePath ]
if { [ file exists $fullPath ] } {
return $fullPath
}
}
return ""
}
source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ]
set result [ run_cg_create "xilinx.com:ip:blk_mem_gen:6.2" "buffermem" "Block Memory Generator" "Block Memory Generator (xilinx.com:ip:blk_mem_gen:6.2) generated by Project Navigator" xc6slx45-2csg324 Verilog ]
if { $result == 0 } {
puts "Core Generator create command completed successfully."
} elseif { $result == 1 } {
puts "Core Generator create command failed."
} elseif { $result == 3 || $result == 4 } {
# convert 'version check' result to real return range, bypassing any messages.
set result [ expr $result - 3 ]
} else {
puts "Core Generator create cancelled."
}
exit $result
##
## Core Generator Run Script, generator for Project Navigator create command
##
proc findRtfPath { relativePath } {
set xilenv ""
if { [info exists ::env(XILINX) ] } {
if { [info exists ::env(MYXILINX)] } {
set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ]
} else {
set xilenv $::env(XILINX)
}
}
foreach path [ split $xilenv $::xilinx::path_sep ] {
set fullPath [ file join $path $relativePath ]
if { [ file exists $fullPath ] } {
return $fullPath
}
}
return ""
}
source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ]
set result [ run_cg_create "xilinx.com:ip:blk_mem_gen:6.2" "spiloopmem" "Block Memory Generator" "Block Memory Generator (xilinx.com:ip:blk_mem_gen:6.2) generated by Project Navigator" xc6slx45-2csg324 Verilog ]
if { $result == 0 } {
puts "Core Generator create command completed successfully."
} elseif { $result == 1 } {
puts "Core Generator create command failed."
} elseif { $result == 3 || $result == 4 } {
# convert 'version check' result to real return range, bypassing any messages.
set result [ expr $result - 3 ]
} else {
puts "Core Generator create cancelled."
}
exit $result
##
## Core Generator Run Script, generator for Project Navigator edit command
##
proc findRtfPath { relativePath } {
set xilenv ""
if { [info exists ::env(XILINX) ] } {
if { [info exists ::env(MYXILINX)] } {
set xilenv [join [list $::env(MYXILINX) $::env(XILINX)] $::xilinx::path_sep ]
} else {
set xilenv $::env(XILINX)
}
}
foreach path [ split $xilenv $::xilinx::path_sep ] {
set fullPath [ file join $path $relativePath ]
if { [ file exists $fullPath ] } {
return $fullPath
}
}
return ""
}
source [ findRtfPath "data/projnav/scripts/dpm_cgUtils.tcl" ]
set result [ run_cg_edit "spiloopmem" xc6slx45-2csg324 Verilog ]
if { $result == 0 } {
puts "Core Generator edit command completed successfully."
} elseif { $result == 1 } {
puts "Core Generator edit command failed."
} elseif { $result == 3 || $result == 4 } {
# convert 'version check' result to real return range, bypassing any messages.
set result [ expr $result - 3 ]
} else {
puts "Core Generator edit cancelled."
}
exit $result
Version 4
SymbolType BLOCK
TEXT 32 32 LEFT 4 spiloopmem
RECTANGLE Normal 32 32 544 1376
LINE Wide 0 80 32 80
PIN 0 80 LEFT 36
PINATTR PinName addra[11:0]
PINATTR Polarity IN
LINE Wide 0 112 32 112
PIN 0 112 LEFT 36
PINATTR PinName dina[7:0]
PINATTR Polarity IN
LINE Normal 0 144 32 144
PIN 0 144 LEFT 36
PINATTR PinName ena
PINATTR Polarity IN
LINE Wide 0 208 32 208
PIN 0 208 LEFT 36
PINATTR PinName wea[0:0]
PINATTR Polarity IN
LINE Normal 0 272 32 272
PIN 0 272 LEFT 36
PINATTR PinName clka
PINATTR Polarity IN
LINE Wide 0 432 32 432
PIN 0 432 LEFT 36
PINATTR PinName addrb[11:0]
PINATTR Polarity IN
LINE Normal 0 496 32 496
PIN 0 496 LEFT 36
PINATTR PinName enb
PINATTR Polarity IN
LINE Normal 0 624 32 624
PIN 0 624 LEFT 36
PINATTR PinName clkb
PINATTR Polarity IN
LINE Wide 576 368 544 368
PIN 576 368 RIGHT 36
PINATTR PinName doutb[7:0]
PINATTR Polarity OUT
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<generated_project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
<!-- -->
<!-- For tool use only. Do not edit. -->
<!-- -->
<!-- ProjectNavigator created generated project file. -->
<!-- For use in tracking generated file and other information -->
<!-- allowing preservation of process status. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
<version xmlns="http://www.xilinx.com/XMLSchema">11.1</version>
<sourceproject xmlns="http://www.xilinx.com/XMLSchema" xil_pn:fileType="FILE_XISE" xil_pn:name="spiloopmem.xise"/>
<files xmlns="http://www.xilinx.com/XMLSchema">
<file xil_pn:fileType="FILE_USERDOC" xil_pn:name="blk_mem_gen_v6_2_readme.txt" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_ASY" xil_pn:name="spiloopmem.asy" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_SYMBOL" xil_pn:name="spiloopmem.sym" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_VEO" xil_pn:name="spiloopmem.veo" xil_pn:origination="imported"/>
</files>
<transforms xmlns="http://www.xilinx.com/XMLSchema"/>
</generated_project>
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6e
$0`;44<,[o}e~g`n;"2*732(-80!<74012345678=:0<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;=95>2;KMTPR=imnym1?>:1<20>752@D[YY4ndepa847=87;?7<:5IORVP?GCL[K7=>4?>06851<NFY__6LJKRC>27?69991:6D@_UU8tad:7294:>6==:HLSQQ<CAH68=7>113906?OIX\^1HDL33083:45<;;0DYY^ZT;FLE956294:?6==:NWWTPR=LFH7?<4?>0380?OIX\^1HD^N<283:47<<3CE\XZ5DHRA86<768:087GAPTV9S@G;;3:5==5;:HLSQQ<PMK686=0>2:69KPRW]]0OC]O33;2=57=32F__\XZ5DNRA86<76l1=av;5bqd772*:8;047GAPTV9`lhf4>0;2<=48;MVPUSS2me~xo28:1<;?DBCZH6;245NDEPB846912KOH_O310<:?DBCZH6:>3l4AEFQE97429427LJKR@>27;><IMNYM1?18:CG@WG;:720MIJ]A=1=<>GCL[K78364AEFQE93902KOH_O36?:8EABUI5=546OKDSC?<;><IMNYM1718:CG@WD;8730MIJ]B=33:<=FLMXI0<?19:CG@WD;9;4i7LJKRC>27?6912KOH_L312<;?DBCZK6:255NDEPA878?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:0611JHI\M<9<;?DBCZK622>5NLM:8FPUXAGLD>6MJ139@L@ELWECHIC]J_U[SA1=DDB:=7NBD1925?FJL:>:>7NBD2Y:8GIM5P82;96MCK827?FJLI<1H@FO>7:AOOD7C:>1H@FO>D558GIMF9M2?7NBDB49@HND6=2IGGN?:;BNH@43<KEAOZn5LLJFU[AOQAMO>7NBDFY:8GIMAP82;56M@MLKWP@B6<2ID^HQHEOGQEQOHFVCEJB94CSGBP@Bd3MK_MRYFDUJ\Ef=CI]KT[DJ[H^@5?AOF494<7IGN<02=3>BNI5;:2:5KI@>26;1<L@K7=>08;EKB8429?2NBM1?:>69GMD:6>7=0HDO316<4?AOF4825;6JFA=3::3=CAH6:2:5KI@>14;1<L@K7><08;EKB8749?2NBM1<<>69GMD:5<7=0HDO324<4?AOF4;<5;6JFA=04:2=CAH694394DHC?6<813MCJ0?08;EKB866912NBM1=>:1<4?AOF4:;5:6JFA=1=2>BNI5>5:6JFA=7=2>BNI5<5:6JFA=5=2>BNI525:6JFA=;=2>BNJ5:5;6JFB=33:2=CAK6:=394DH@?57803MCI0<=17:FJF9736>1OEO2>5?58@LD;9?4<7IGM<05=3>BNJ5;32:5KIC>2=;0<L@H7=394DH@?65803MCI0??17:FJF9456>1OEO2=3?58@LD;:=4<7IGM<37=3>BNJ58=2:5KIC>13;1<L@H7>508;EKA87?9>2NBN1<17:FJF957601OEO2<1;2=3>BNJ59:2;5KIC>0:3=CAK6?2;5KIC>6:3=CAK6=2;5KIC>4:3=CAK632;5KIC>::2=CAYK7<394DHRB84803MC[M1<19:FJTD:4294<7IG_A=1=3>BNXK6;2:5KIQ@?5;1<L@ZI0?06;EKSF95=87=0HD^M<2<5?AIF494<7IAN<02=3>BHI5;:2:5KO@>26;1<LFK7=>08;EMB8429?2NDM1?:>69GKD:6>7=0HBO316<4?AIF4825;6J@A=3::3=CGH6:2:5KO@>14;1<LFK7><08;EMB8749?2NDM1<<>69GKD:5<7=0HBO324<4?AIF4;<5;6J@A=04:2=CGH694394DNC?6<813MEJ0?08;EMB866912NDM1=>:1<4?AIF4:;5:6J@A=1=2>BHI5>5:6J@A=7=2>BHI5<5:6J@A=5=2>BHI525:6J@A=;=3>BHIVXNK;5KOC>3:2=CGK6:<394DN@?54803MEI0<<17:FLF9746>1OCO2>4?58@JD;9<4<7IAM<04=3>BHJ5;<2:5KOC>2<;1<LFH7=409;EMA84803MEI0?>17:FLF9466>1OCO2=2?58@JD;::4<7IAM<36=3>BHJ58>2:5KOC>12;1<LFH7>:08;EMA87>9?2NDN1<6>79GKG:56>1OCO2<0?;8@JD;;80;2:5KOC>05;0<LFH7?384DN@?0;0<LFH79384DN@?2;0<LFH7;384DN@?<;0<LFH75394DN@\V@A03ME[M1>17:FLTD:66>1OC]O32?;8@JVF4:0;2:5KOQC?7;1<LFZI0=08;EMSF979?2ND\O2=>89GKUD;;3:5;6J@PC>0:6=BFH90ICLm;DL\VVRUIDUJn6KA_SQWVDKXJ<1MMA]J1:E0?BHC02CEEY^P01:8MKOSXV::46GAIUR\47><AGC_\R><8:KMMQVX8=20ECG[P^26<>OIA]ZT<;64IOKWTZ60?2CEEYQ?069JJLRX88=0ECG[_104?LHN\V:8;6GAIU]302=NF@^T<894IOKW[5003@DBXR>87:KMMQY70>1BBDZP0858MKOSW9K<7D@FT^2A3>OIA]U;O:5FNHV\4A1<AGC_S=K8;HLJPZ6A?2CEEYQ>069JJLRX98=0ECG[_004?LHN\V;8;6GAIU]202=NF@^T=894IOKW[4003@DBXR?87:KMMQY60>1BBDZP1858MKOSW8K<7D@FT^3A3>OIA]U:O:5FNHV\5A1<AGC_S<K8;HLJPZ7A?2CEEYQ=069JJLRX:8=0ECG[_304?LHN\V88;6GAIU]102=NF@^T>894IOKW[7003@DBXR<87:KMMQY50>1BBDZP2858MKOSW;K<7D@FT^0A3>OIA]U9O:5FNHV\6A1<AGC_S?K8;HLJPZ4A?2CEEYQ<069JJLRX;8=0ECG[_204?LHN\V98;6GAIU]002=NF@^T?894IOKW[6003@DBXR=87:KMMQY40>1BBDZP3858MKOSW:K<7D@FT^1A3>OIA]U8O:5FNHV\7A1<AGC_S>K8;HLJPZ5A>2CEEYQN6:KMMQYE12CEEYQIIMG5?IIFLLN=7AALKDF4?II@AJKGo6CnjnpUawunggi0Ad``rWgqwlii:2D:;6@JTVMQO1=IGGO37B 91yf\H1=WI[^j7]GA_CWPMA^e3YCESO[\N@OF2>VTLFDNm6\NMC35FRCU>2XNKNKN6:PFCFCE<2XXXL:4RRVA3>TT\]S[Ih5]SU]SVLIUA]STMh5]SU]SVLIUA]STN<?4SIPFCZC_\[KHXR@HCd9PLWC@WDCES^GUE018WLKXKFFGE^G@N^AKAFMf3ZCFSIKYIBG5?VIRZJO37^^NRUCM22=TZ_KGSL94SSTBHZD13Z^JXX];;R[MG1=SQYO<:6[?/yqw[gjlWdofSjkaescwkw)`fh~bzhlbg/lbplpbWkf`S`kb_fgm+sgkam$hy| r`ookjv\8T$ym` }/r4\jjoia}$ym`!\DQ,PMHVKMVZYE@?7.scn33=R8&rxxRlck^ofiZabflxjxb| gocwmsceen$emygye^`ooZkbeVmnb"xnlhf-gvru'{kf`ba[0_-vdk)z&y=Scafnhv-vdk([MZ%_DC_LD]SVLK60'xjan5ZSDP\RLUNJEO27[GJW^VZT@0<_LK7<384WDC?5;0<_LK7>364WDC?7?69>2]NM1=16:UFF969>2]NN1?16:UFF94902]NN1=50?48S@D;;7h0[_G[E^DJVVRd3^XBXHQBOEG\Ef=PZ@^NS@AKE^@2`>^ND@DS!UJM 1,2$VRRJ):%=-O\CHK5?]USD@H<7U][_FLGf>^XKFXNSD@IO79[`gYNlo1SheQ_rhoUawungg;;7Ujb_LcikwPbzzcdb<>4Xeo\Ilhhz_oydaa3:Zpp6=^mz20mij}a=2==>gcl{k7==0m;`fgvd:693:556okdsc?548?3hno~l2>>99b`atf4;437ljkr`>0:==flmxj0907;`fgvd:2611jhi|n<7<;?dbczh6<255ndepb8=8?3hno~l26>99b`ate49427ljkrc>24;d<imnyn1?>:1<:?dbczk6:=364aefqf97902kohl32?:8eabuj59546okds`?0;><imnyn1;18:cg`wd;>720mij}b=5=<>gcl{h74364aefqf9?9911i`fQbel]dakY`mgoyenQlsup2<>dkcVgnaRijn^rqmhYpam~cS<?7;cnh[hcjWnoeS}|fm^uj`qnX:8n0naePmdo\c`hXx{cfSz|npqgq[v0X98n0naePmdo\c`hXx{cfSz|npqgq[v0X:o1i`fQbel]dakYsgy;;7obd_lgn[bciW<T>?m4bmi\i`kXoldTz;Q=,!Zjhlh(JEYI-Ijndpbpjt'9:$9=95mlj]nahY`mgU}:R<Pxrv27>dkcVgnaRgaptv\fiidc8>0naePmdo\kprw}}Ui`bmd4:aood2<keai;6jfn`>3:2=cagk7=394dhlb87803mcem1=17:fjjd:36>1oeco35?58`lhf4?427igaa=594;1<l`dj0:07;emvpg:7611ocxzm<0<;?air|k69255kotva868?3me~xo2;>99gkpre4<437iaztc>5:d=cg|~i0:4?>99gkpre4>487h`n3:gmf==iojh~eajn;rrjhjiwelg?h:5|phnlkukbe%hggRcjm^efjZp1W;&poRokdsc\slbs`4;9 nQndepa[roc|a7:>!mPamelvlroe4;'oRowi^kg[roc|a7? nQnxh]phdpbW}s{i0>#c^c{mZr~xl7: nQmyug\wl|b50&hSnabmnl\gim:8%iThhhnumv\`drf59&hSig|acnf[rgufVhczRm`lm?3(fYcazki`hQxasl\fmpXzhdli0>#c^goegiui}cdbRjfr<A9+Pubzz%ffaw`nr-tkwmtxhin#{]_I.rqkohf~&r{"~losgp+vvnaoiTz<Q?0^c,``pk'yxdfcoy/hr`kwcXl`x$x`~ _be,(fYaidcgu0}asvbj3*dWakxSlvf_hf>4)eX`hyTico21-a\lduXmgh6=!mPh`q\mklbk}oy~0>#c^jbwZkbeVe~x}{{_sgdwZg:8%iTdl}Pmdo\kprw}}Uyij}Pb<2/gZnf{Vg~tRaztqww[wc`{Vk6<!mPh`q\ip~Xg|~{yyQ}efq\f86+kVbjR|jgbgb95*dWakxSkhcd`>4)eX`hyT~~zn=1.`[mgtW{yn0>#c^jbwZuhn}ohoRgaptv\v`atWh7; nQgar]pkcrbkjUdyy~zt^pfcvYe59&hSd`ft^djh`Yiido6bbQlod]emicXdfkoii"l_hljpdYqie7; nQfnhva[sgk59&hSd`{esdbg`Ysqyo6<!mPlncg[lhn|Vlb`h3?,b]nahYsqyo6=!mPmtz\tlvbd`dnS~zngdq>4)eXx{cfSywe<3/gZtbimUoi}zg_`?74<0+kVxnmiQkeqvk[g;380<'oR|jae]tmaroWh73 nQ}e`f\slbs`Vh64!mPrrv\twohz`~rSl3LE-a\vvrXx{cd~dzv_c?@A)eXzz~Txt~j=R[MG)eXzz~ym`Qn=1.`[wuszhgTn0>#c^qjiZehdecxeb`Pcig`o8GKD%iTy~kPbxvf[rcf59&hSx}j_c{waZqbj4:'oR{|e^ffbdsk|Vnjxl3?,b]vw`Ybkj7; nQzsd]pkcrbkj7; nQxe`]tmaro58&hSzkm_vkgpm;6$jU|~dzj_egspmYf5=:2:!mPwskwaZbbx}bTn0:?97.`[rtn|lUfcikPa<UQMQCXN@XXX!mPwskwaZkhllUi1Z\FTD]EMWUS$jU|~dzj_vkgpmYf51&hSz|ftd]tmaroWk73 nQwddtjg``fe`fr1~~nrucm2x7b3zzb`bamdo/fimXelgTkh`Pv7]1(~{?3~oj0=4?>79tad:76tJK|???;AB{5g5=N3>1=v];d;341?73<3;8?=<i3;16`0b|f8=86<5a16692>"6?80::i5rS5`9523=9=>1=>=?2g1970b1j2Y:?n4>b383>4548;l86>;k719P0g<6j;0;6<=<03d0>63c?:1o=o=50;395~U3l3;<97?;4;30754a;39>h;;4vU361?6=93;1>hu\4e8230<6<=0:?>>=f2801a023-;>j7?<e:T237<5s|;8j7?4u063>5=z,8>>6<=4b0`0>5<5l391>huG14g8 43e28h87W=::4y;>1<6<3?1=84r$053>4??3-9<6<l:;%6`>4d33-;>>7?4$072>4113`;i;7>5$064>4d13g;?:7>4;h34e?6=,8><6<96;o372?6<3`;<47>5$064>41>3g;?:7?4;h3;7?6=,8><6<96;o372?4<3`;3>7>5$064>41>3g;?:7=4;h3;5?6=,8><6<96;o372?2<3`;3<7>5$064>41>3g;?:7;4;h34b?6=,8><6<96;o372?0<3`;<i7>5$064>41>3g;?:794;h34`?6=,8><6<96;o372?><3`;<o7>5$064>41>3g;?:774;h34f?6=,8><6<96;o372?g<3`;<;7>5$064>41>3g;?:7l4;h3b2?6=,8><6<o:;o372?6<3`;j87>5$064>4g23g;?:7?4;h3b7?6=,8><6<o:;o372?4<3`;j>7>5$064>4g23g;?:7=4;h3b5?6=,8><6<o:;o372?2<3`;j<7>5$064>4g23g;?:7;4;h3:b?6=,8><6<o:;o372?0<3`;2i7>5$064>4g23g;?:794;h3;3?6=,8><6<69;o372?6<3`;397>5$064>4>13g;?:7?4;h3:4?6=,8><6<69;o372?4<3`;3j7>5$064>4>13g;?:7=4;h3;a?6=,8><6<69;o372?2<3`;3h7>5$064>4>13g;?:7;4;h3;g?6=,8><6<69;o372?0<3`;3n7>5$064>4>13g;?:794;h3;e?6=,8><6<69;o372?><3`;357>5$064>4>13g;?:774;h3;<?6=,8><6<69;o372?g<3`;387>5$064>4>13g;?:7l4;h3:g?6=3`;i<7>5;h3:`?6=3`;i=7>5;n3bb?6=,8><6<oj;o372?6<3f;jh7>5$064>4gb3g;?:7?4;n3bg?6=,8><6<oj;o372?4<3f;jn7>5$064>4gb3g;?:7=4;n3be?6=,8><6<oj;o372?2<3f;j57>5$064>4gb3g;?:7;4;n3b<?6=,8><6<oj;o372?0<3f;j;7>5$064>4gb3g;?:794;c35b?6=93:1<v*>5c8e4>N6>l1C=8k4odd94?=zj8?h6=4mc;294~"6=k0:845G17g8L43b3S9>6nu9:68g>47=m3;96k4m:`8`>46=13we8h4;;o6e>1=ijm0;7cji:19'af<bm2.nh7kj;%d2>6=#n;087)h<:29'b1<43-l>6>5+f780?!`02:1/j54<;%d:>6=#nh087)hm:29'bf<43-lo6>5+fd80?!`a2:1/==>53:&244<43-;;>7=4$020>6=#99>1?6*>0480?!77>390(<>8:29'55>=;2.:<44<;%33e?5<,8:i6>5+11a97>"68m087)??e;18 46a2:1/=<>53:&254<43-;:>7=4$030>6=#98>1?6*>1480?!76>390(<?8:29'54>=;2.:=44<;%32e?5<,8;i6>5+10a97>"69m087)?>e;18 47a2:1/=?>53:&264<43-;9>7=4$000>6=#9;>1?6*>2480?!75>390(<<8:29'57>=;2.:>44<;%31e?5<,88i6>5+13a97>"6:m087)?=e;18 44a2:1/=>>53:&274<43-;8>7=4$010>6=#9:>1?6*>3480?!74>390(<=8:29'56>=;2.:?44=;%30e?4<,89i6<:<;%37a?72i2.:8k4<6:&215<4>2.:9>4<4:&211<6=?1/=8952:&21=<53-;=n7?9a:&22f<6>h1b=9o50;9j7`<722cnn7>5;h37`?6=3`>86=44i06a>5<<a8>h6=44idc94?=n1?0;6)?;7;;6?k73>3:07d7;:18'511=1<1e=9851:9j=6<72-;?;77:;o372?4<3`396=4+1559=0=i9=<1?65f17694?"6<>0::>5a15494>=n9?81<7*>468226=i9=<1=65f17394?"6<>0::>5a15496>=n9?:1<7*>468226=i9=<1?65`b483>!73?3h?7c?;6;28?jd4290/=995b59m510=921dn<4?:%373?d33g;?:7<4;n`3>5<#9==1n95a15497>=hio0;6)?;7;`7?k73>3>07boj:18'511=j=1e=9855:9lea<72-;?;7l;;o372?0<3fkh6=4+1559f1=i9=<1;65`ac83>!73?3h?7c?;6;:8?jgf290/=995b59m510=121dm44?:%373?d33g;?:7o4;nc;>5<#9==1n95a1549f>=hi?0;6)?;7;`7?k73>3i07bo::18'511=j=1e=985d:9le1<72-;?;7l;;o372?c<3fk86=4+1559f1=i9=<1j65`a383>!73?3h?7c?;6;33?>if93:1(<:8:c68j42128;07bo?:18'511=j=1e=9851398k<`=83.:8:4m4:l203<6;21d5h4?:%373?d33g;?:7?;;:m:`?6=,8><6o:4n065>43<3fhh6=4+1559f1=i9=<1=;54oc`94?"6<>0i86`>47823>=hjh0;6)?;7;`7?k73>3;376am9;29 4202k>0b<:9:0;8?jd?290/=995b59m510=9h10co950;&202<e<2d:8;4>b:9lf3<72-;?;7l;;o372?7d32ei>7>5$064>g2<f8>=6<j4;nc4>5<#9==1n95a15495`=<g0i1<7*>468a0>h6<?0:j65f1c83>!73?3;j7c?;6;28?l7>290/=9951`9m510=921b=54?:%373?7f3g;?:7<4;h34>5<#9==1=l5a15497>=n:=0;6)?;7;3b?k73>3>07d<<:18'511=9h1e=9855:9j67<72-;?;7?n;o372?0<3`8:6=4+15595d=i9=<1;65f2183>!73?3;j7c?;6;:8?l7a290/=9951`9m510=121b=h4?:%373?7f3g;?:7o4;h3g>5<#9==1=l5a1549f>=n9j0;6)?;7;3b?k73>3i07d?9:18'511=9h1e=985d:9j6d<72-;?;7<6;o372?6<3`836=4+15596<=i9=<1=65f2683>!73?3827c?;6;08?l41290/=995289m510=;21b?>4?:%373?4>3g;?:7:4;h11>5<#9==1>45a15491>=n;80;6)?;7;0:?k73>3<07d=?:18'511=:01e=9857:9j6c<72-;?;7<6;o372?><3`8n6=4+15596<=i9=<1565f2e83>!73?3827c?;6;c8?l4d290/=995289m510=j21b>o4?:%373?4>3g;?:7m4;h06>5<#9==1>45a1549`>=n0h0;6)?;7;::?k73>3:07d67:18'511=001e=9851:9j<3<72-;?;766;o372?4<3`2>6=4+1559<<=i9=<1?65f8583>!73?3227c?;6;68?l>4290/=995889m510==21b4?4?:%373?>>3g;?:784;h:2>5<#9==1445a15493>=n090;6)?;7;::?k73>3207d9i:18'511=001e=9859:9j3`<72-;?;766;o372?g<3`=o6=4+1559<<=i9=<1n65f7c83>!73?3227c?;6;a8?l1f290/=995889m510=l21b;44?:%373?>>3g;?:7k4;h5;>5<#9==1445a1549b>=n?>0;6)?;7;::?k73>3;;76g86;29 4202130b<:9:038?l12290/=995889m510=9;10e::50;&202<?12d:8;4>3:9j36<72-;?;766;o372?7332c<>7>5$064>=?<f8>=6<;4;h;2>5<#9==1445a154953=<a0:1<7*>468;=>h6<?0:;65f8g83>!73?3227c?;6;3;?>o?m3:1(<:8:9;8j42128307d6k:18'511=001e=9851`98m=e=83.:8:479:l203<6j21b4o4?:%373?>>3g;?:7?l;:k;3?6=,8><6574n065>4b<3`=h6=4+1559<<=i9=<1=h54i6394?"6<>0356`>4782b>=hm=0;6)?;7;g0?k73>3:07bk=:18'511=m:1e=9851:9la4<72-;?;7k<;o372?4<3fo;6=4+1559a6=i9=<1?65f9c83>!73?33j7c?;6;28?l?>290/=9959`9m510=921b554?:%373??f3g;?:7<4;h;4>5<#9==15l5a15497>=hm00;6)?;7;g;?k73>3:07bk8:18'511=m11e=9851:9la3<72-;?;7k7;o372?4<3fo>6=4+1559a==i9=<1?65`d683>!73?3n=7c?;6;28?jb2290/=995d79m510=921dh>4?:%373?b13g;?:7<4;nf1>5<#9==1h;5a15497>=hl80;6)?;7;f5?k73>3>07bj?:18'511=l?1e=9855:9lgc<72-;?;7j9;o372?0<3fin6=4+1559`3=i9=<1;65`ce83>!73?3n=7c?;6;:8?jed290/=995d79m510=121doo4?:%373?b13g;?:7o4;nab>5<#9==1h;5a1549f>=hk10;6)?;7;f5?k73>3i07bm8:18'511=l?1e=985d:9lg3<72-;?;7j9;o372?c<3fi>6=4+1559`3=i9=<1j65`c583>!73?3n=7c?;6;33?>id;3:1(<:8:e48j42128;07bm=:18'511=l?1e=9851398kf7=83.:8:4k6:l203<6;21do=4?:%373?b13g;?:7?;;:mab?6=,8><6i84n065>43<3fnn6=4+1559`3=i9=<1=;54oef94?"6<>0o:6`>47823>=hlj0;6)?;7;f5?k73>3;376akb;29 4202m<0b<:9:0;8?jbf290/=995d79m510=9h10ci750;&202<c>2d:8;4>b:9l`=<72-;?;7j9;o372?7d32eo87>5$064>a0<f8>=6<j4;na:>5<#9==1h;5a15495`=<gko1<7*>468g2>h6<?0:j65f17;94?"6<>0::55a15494>=n9?=1<7*>46822==i9=<1=65f17494?"6<>0::55a15496>=n9??1<7*>46822==i9=<1?65f6883>!73?3<37c?;6;28?l00290/=995699m510=921b:84?:%373?0?3g;?:7<4;h47>5<#9==1:55a15497>=n>:0;6)?;7;4;?k73>3>07d8=:18'511=>11e=9855:9j24<72-;?;787;o372?0<3`<;6=4+15592==i9=<1;65f5g83>!73?3<37c?;6;:8?l3b290/=995699m510=121b9i4?:%373?0?3g;?:7o4;h7`>5<#9==1:55a1549f>=n=h0;6)?;7;4;?k73>3i07d;6:18'511=>11e=985d:9j1=<72-;?;787;o372?c<3`?<6=4+15592==i9=<1j65f5783>!73?3<37c?;6;33?>o2=3:1(<:8:7:8j42128;07d;;:18'511=>11e=9851398m05=83.:8:498:l203<6;21b9?4?:%373?0?3g;?:7?;;:k65?6=,8><6;64n065>43<3`=;6=4+15592==i9=<1=;54i7d94?"6<>0=46`>47823>=n>l0;6)?;7;4;?k73>3;376g9d;29 4202?20b<:9:0;8?l0d290/=995699m510=9h10e;l50;&202<102d:8;4>b:9j2d<72-;?;787;o372?7d32c=:7>5$064>3><f8>=6<j4;h7a>5<#9==1:55a15495`=<a<:1<7*>4685<>h6<?0:j65rb07g>5<ek3:1<v*>5c820<=O9?o0D<;j;[16>f}12>0o6<?5e;31>c<e2h0h6<>59;m0`<33g>m695abe83?kba291/in4je:&f`?cb3-l:6>5+f380?!`42:1/j94<;%d6>6=#n?087)h8:29'b=<43-l26>5+f`80?!`e2:1/jn4<;%dg>6=#nl087)hi:29'556=;2.:<<4<;%336?5<,8:86>5+11697>"68<087)??6;18 4602:1/==653:&24<<43-;;m7=4$02a>6=#99i1?6*>0e80?!77m390(<>i:29'546=;2.:=<4<;%326?5<,8;86>5+10697>"69<087)?>6;18 4702:1/=<653:&25<<43-;:m7=4$03a>6=#98i1?6*>1e80?!76m390(<?i:29'576=;2.:><4<;%316?5<,8886>5+13697>"6:<087)?=6;18 4402:1/=?653:&26<<43-;9m7=4$00a>6=#9;i1?6*>2e80?!75m390(<<i:29'566=;2.:?<4<;%306?5<,8986>5+12697>"6;<087)?<6;18 4502:1/=>653:&27<<53-;8m7<4$01a>4243-;?i7?:a:&20c<4>2.:9=4<6:&216<4<2.:994>579'501=:2.:954=;%35f?71i2.::n4>6`9j51g=831b?h4?::kff?6=3`;?h7>5;h60>5<<a8>i6=44i06`>5<<alk1<75f9783>!73?33>7c?;6;28?l?3290/=995949m510=921b5>4?:%373??23g;?:7<4;h;1>5<#9==1585a15497>=n9?>1<7*>468226=i9=<1<65f17094?"6<>0::>5a15495>=n9?;1<7*>468226=i9=<1>65f17294?"6<>0::>5a15497>=hj<0;6)?;7;`7?k73>3:07bl<:18'511=j=1e=9851:9lf4<72-;?;7l;;o372?4<3fh;6=4+1559f1=i9=<1?65`ag83>!73?3h?7c?;6;68?jgb290/=995b59m510==21dmi4?:%373?d33g;?:784;nc`>5<#9==1n95a15493>=hik0;6)?;7;`7?k73>3207bon:18'511=j=1e=9859:9le<<72-;?;7l;;o372?g<3fk36=4+1559f1=i9=<1n65`a783>!73?3h?7c?;6;a8?jg2290/=995b59m510=l21dm94?:%373?d33g;?:7k4;nc0>5<#9==1n95a1549b>=hi;0;6)?;7;`7?k73>3;;76an1;29 4202k>0b<:9:038?jg7290/=995b59m510=9;10c4h50;&202<e<2d:8;4>3:9l=`<72-;?;7l;;o372?7332e2h7>5$064>g2<f8>=6<;4;n``>5<#9==1n95a154953=<gkh1<7*>468a0>h6<?0:;65`b`83>!73?3h?7c?;6;3;?>ie13:1(<:8:c68j42128307bl7:18'511=j=1e=9851`98kg1=83.:8:4m4:l203<6j21dn;4?:%373?d33g;?:7?l;:ma6?6=,8><6o:4n065>4b<3fk<6=4+1559f1=i9=<1=h54o8a94?"6<>0i86`>4782b>=n9k0;6)?;7;3b?k73>3:07d?6:18'511=9h1e=9851:9j5=<72-;?;7?n;o372?4<3`;<6=4+15595d=i9=<1?65f2583>!73?3;j7c?;6;68?l44290/=9951`9m510==21b>?4?:%373?7f3g;?:784;h02>5<#9==1=l5a15493>=n:90;6)?;7;3b?k73>3207d?i:18'511=9h1e=9859:9j5`<72-;?;7?n;o372?g<3`;o6=4+15595d=i9=<1n65f1b83>!73?3;j7c?;6;a8?l71290/=9951`9m510=l21b>l4?:%373?4>3g;?:7>4;h0;>5<#9==1>45a15495>=n:>0;6)?;7;0:?k73>3807d<9:18'511=:01e=9853:9j76<72-;?;7<6;o372?2<3`996=4+15596<=i9=<1965f3083>!73?3827c?;6;48?l57290/=995289m510=?21b>k4?:%373?4>3g;?:764;h0f>5<#9==1>45a1549=>=n:m0;6)?;7;0:?k73>3k07d<l:18'511=:01e=985b:9j6g<72-;?;7<6;o372?e<3`8>6=4+15596<=i9=<1h65f8`83>!73?3227c?;6;28?l>?290/=995889m510=921b4;4?:%373?>>3g;?:7<4;h:6>5<#9==1445a15497>=n0=0;6)?;7;::?k73>3>07d6<:18'511=001e=9855:9j<7<72-;?;766;o372?0<3`2:6=4+1559<<=i9=<1;65f8183>!73?3227c?;6;:8?l1a290/=995889m510=121b;h4?:%373?>>3g;?:7o4;h5g>5<#9==1445a1549f>=n?k0;6)?;7;::?k73>3i07d9n:18'511=001e=985d:9j3<<72-;?;766;o372?c<3`=36=4+1559<<=i9=<1j65f7683>!73?3227c?;6;33?>o0>3:1(<:8:9;8j42128;07d9::18'511=001e=9851398m22=83.:8:479:l203<6;21b;>4?:%373?>>3g;?:7?;;:k46?6=,8><6574n065>43<3`3:6=4+1559<<=i9=<1=;54i8294?"6<>0356`>47823>=n0o0;6)?;7;::?k73>3;376g7e;29 4202130b<:9:0;8?l>c290/=995889m510=9h10e5m50;&202<?12d:8;4>b:9j<g<72-;?;766;o372?7d32c3;7>5$064>=?<f8>=6<j4;h5`>5<#9==1445a15495`=<a>;1<7*>468;=>h6<?0:j65`e583>!73?3o87c?;6;28?jc5290/=995e29m510=921di<4?:%373?c43g;?:7<4;ng3>5<#9==1i>5a15497>=n1k0;6)?;7;;b?k73>3:07d76:18'511=1h1e=9851:9j==<72-;?;77n;o372?4<3`3<6=4+1559=d=i9=<1?65`e883>!73?3o37c?;6;28?jc0290/=995e99m510=921di;4?:%373?c?3g;?:7<4;ng6>5<#9==1i55a15497>=hl>0;6)?;7;f5?k73>3:07bj::18'511=l?1e=9851:9l`6<72-;?;7j9;o372?4<3fn96=4+1559`3=i9=<1?65`d083>!73?3n=7c?;6;68?jb7290/=995d79m510==21dok4?:%373?b13g;?:784;naf>5<#9==1h;5a15493>=hkm0;6)?;7;f5?k73>3207bml:18'511=l?1e=9859:9lgg<72-;?;7j9;o372?g<3fij6=4+1559`3=i9=<1n65`c983>!73?3n=7c?;6;a8?je0290/=995d79m510=l21do;4?:%373?b13g;?:7k4;na6>5<#9==1h;5a1549b>=hk=0;6)?;7;f5?k73>3;;76al3;29 4202m<0b<:9:038?je5290/=995d79m510=9;10cn?50;&202<c>2d:8;4>3:9lg5<72-;?;7j9;o372?7332eij7>5$064>a0<f8>=6<;4;nff>5<#9==1h;5a154953=<gmn1<7*>468g2>h6<?0:;65`db83>!73?3n=7c?;6;3;?>icj3:1(<:8:e48j42128307bjn:18'511=l?1e=9851`98ka?=83.:8:4k6:l203<6j21dh54?:%373?b13g;?:7?l;:mg0?6=,8><6i84n065>4b<3fi26=4+1559`3=i9=<1=h54ocg94?"6<>0o:6`>4782b>=n9?31<7*>46822==i9=<1<65f17594?"6<>0::55a15495>=n9?<1<7*>46822==i9=<1>65f17794?"6<>0::55a15497>=n>00;6)?;7;4;?k73>3:07d88:18'511=>11e=9851:9j20<72-;?;787;o372?4<3`<?6=4+15592==i9=<1?65f6283>!73?3<37c?;6;68?l05290/=995699m510==21b:<4?:%373?0?3g;?:784;h43>5<#9==1:55a15493>=n=o0;6)?;7;4;?k73>3207d;j:18'511=>11e=9859:9j1a<72-;?;787;o372?g<3`?h6=4+15592==i9=<1n65f5`83>!73?3<37c?;6;a8?l3>290/=995699m510=l21b954?:%373?0?3g;?:7k4;h74>5<#9==1:55a1549b>=n=?0;6)?;7;4;?k73>3;;76g:5;29 4202?20b<:9:038?l33290/=995699m510=9;10e8=50;&202<102d:8;4>3:9j17<72-;?;787;o372?7332c>=7>5$064>3><f8>=6<;4;h53>5<#9==1:55a154953=<a?l1<7*>4685<>h6<?0:;65f6d83>!73?3<37c?;6;3;?>o1l3:1(<:8:7:8j42128307d8l:18'511=>11e=9851`98m3d=83.:8:498:l203<6j21b:l4?:%373?0?3g;?:7?l;:k52?6=,8><6;64n065>4b<3`?i6=4+15592==i9=<1=h54i4294?"6<>0=46`>4782b>=z{8>:6=4n1z?22c<bn27:9n4>c:?21f<6>27:9n4=b:?21f<5=27:9n499:?21f<1?27:9n495:?21f<1<27:9n493:?21f<1:27:9n491:?21f<1827:9n4:f:?21f<2m27:9n4:d:?21f<2k27:9n4:a:?21f<2127:9n4:8:?21f<2?27:9n4:6:?21f<2=27:9n4:4:?21f<2;27:9n4:2:?21f<2927:9n480:?21f<1n27:9n49e:?21f<1l27:9n49c:?21f<1j27:9n47a:?21f<?027:9n476:?21f<?=27:9n474:?21f<?;27:9n472:?21f<?927:9n470:?21f<0n27:9n48e:?21f<0l27:9n48b:?21f<0i27:9n489:?21f<0027:9n487:?21f<0>27:9n485:?21f<0<27:9n483:?21f<0:27:9n461:?21f<>827:9n47f:?21f<?m27:9n47d:?21f<?k27:9n47b:?21f<??27:9n48c:?21f<0927:9n466:?21f<><27:9n463:?21f<>:27:9n46b:?21f<>127:9n468:?21f<>?27:9n4>689>50e=9?=01<;l:045?872k3;=963>5b820d=:9<i1=9l4=07`>42d34;>o7?;d:?21a<6k27:9i4>6:?21a<5j27:9i4=5:?21a<1127:9i497:?21a<1=27:9i494:?21a<1;27:9i492:?21a<1927:9i490:?21a<2n27:9i4:e:?21a<2l27:9i4:c:?21a<2i27:9i4:9:?21a<2027:9i4:7:?21a<2>27:9i4:5:?21a<2<27:9i4:3:?21a<2:27:9i4:1:?21a<0827:9i49f:?21a<1m27:9i49d:?21a<1k27:9i49b:?21a<?i27:9i478:?21a<?>27:9i475:?21a<?<27:9i473:?21a<?:27:9i471:?21a<?827:9i48f:?21a<0m27:9i48d:?21a<0j27:9i48a:?21a<0127:9i488:?21a<0?27:9i486:?21a<0=27:9i484:?21a<0;27:9i482:?21a<>927:9i460:?21a<?n27:9i47e:?21a<?l27:9i47c:?21a<?j27:9i477:?21a<0k27:9i481:?21a<>>27:9i464:?21a<>;27:9i462:?21a<>j27:9i469:?21a<>027:9i467:?21a<6>016=8j51758943c28<=70?:d;351>;6=m0:8l5214f951d<58?o6<:l;<36`?73l2wx=l950;0xZ4g034;>o7lj;|q2e=<72;qU=l64=07`>f?<uz;j57>52z\2e<=:9<i1h95rs0cb>5<5sW;jm63>5b8g<>{t9hh1<7<t^0ca?872l3hn7p}>ab83>7}Y9hi01<;k:b;8yv7fl3:1>vP>ae9>50b=l=1v<oi:181[7fn27:9i4k8:p5g7=839pR<l>;<36g?ce34;>h7km;|q2=a<72:qU=4j4=07`>15<58?o69=4}r3a4?6=;rT:n=5214a9ad=:9<n1il5rs0;`>5<4sW;2o63>5b80a>;6=m08i6s|19694?5|V82?70?:c;0`?872l38h7p}>8983>6}Y91201<;l:3f8943c2;n0q~?79;297~X60016=8m52d9>50b=:l1v<6n:180[7?i27:9n4=f:?21a<5n2wx=5l50;1xZ4>e34;>o7=?;<36`?573ty:4n4?:2y]5=e<58?h6>?4=07g>67<uz;3h7>53z\2<a=:9<i1??5214f977=z{82n6=4<{_3;a>;6=j08?63>5e807>{t91l1<7=t^0:e?872k38=70?:d;05?xu6190;6>uQ1828943d2;=01<;k:358yv7?=3:1?vP>849>50e=:116=8j5299~w4>02908wS?77:?21f<5i27:9i4=a:p5<c=838pR<7j;<36g?373ty:5k4?:3y]5<`<58?h68l4}r3b4?6=:rT:m=5214a923=z{8k:6=4={_3b5>;6=j0=m6s|1`094?4|V8k970?:d;73?xu6i:0;6?uQ1`18943c2<h0q~?n4;296~X6i=16=8j5679~w4g12909wS?n6:?21a<1i2wx=:950;1xZ41034;>o7?k;<36`?7c3ty:;o4?:2y]52d<58?h6<k4=07g>4c<uz;<o7>53z\23f=:9<i1=k5214f95c=z{8=o6=4<{_34`>;6=j09<63>5e814>{t9>o1<7=t^05f?872k38:70?:d;02?xu6?o0;6>uQ16d8943d2;801<;k:308yv7?83:1?vP>819>50e=::16=8j5229~w4>62908wS?71:?21f<5<27:9i4=4:p5=4=839pR<6=;<36g?7034;>h7?8;|q2<6<72:qU=5=4=07`>4><58?o6<64}r34<?6=;rT:;55214a95<=:9<n1=45rs05b>5<4sW;<m63>5b82f>;6=m0:n6s|1c594??|V8h<70?:c;350>;6=j0::?5214a9537<58?h6<8?;<36`?71<27:9i4>639>50b=9?;01<;k:043?x{i9k>1<7?tH07f?xh6j<0;6<uG14g8yk7e>3:1=vF>5d9~j4d0290:wE?:e:m5g>=83;pD<;j;|l2f<<728qC=8k4}o3ae?6=9rB:9h5rn0`a>5<6sA;>i6sa1ca94?7|@8?n7p`>be83>4}O9<o0qc?me;295~N6=l1vb<li:182M72m2we=n>50;3xL43b3td:o<4?:0yK50c<ug;h>7>51zJ21`=zf8i86=4>{I36a>{i9j>1<7?tH07f?xh6k<0;6<uG14g8yk7d>3:1=vF>5d9~j4e0290:wE?:e:m5f>=83;pD<;j;|l2g<<728qC=8k4}o3`e?6=9rB:9h5rn0aa>5<6sA;>i6sa1ba94?7|@8?n7p`>ce83>4}O9<o0qc?le;295~N6=l1vb<mi:182M72m2we=i>50;3xL43b3td:h<4?:0yK50c<ug;o>7>51zJ21`=zf8n86=4>{I36a>{i9m>1<7?tH07f?xh6l<0;6<uG14g8yk7c>3:1=vF>5d9~j4b0290:wE?:e:m5a>=83;pD<;j;|l2`<<728qC=8k4}o3ge?6=9rB:9h5rn0fa>5<6sA;>i6sa1ea94?7|@8?n7p`>de83>4}O9<o0qc?ke;295~N6=l1vb<ji:182M72m2we=h>50;3xL43b3td:i<4?:0yK50c<utwvLMMt20295d?djk<<qMNM{1CDU}zHI
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<symbol version="7" name="spiloopmem">
<symboltype>BLOCK</symboltype>
<timestamp>2012-3-7T21:47:40</timestamp>
<pin polarity="Input" x="0" y="80" name="addra[11:0]" />
<pin polarity="Input" x="0" y="144" name="ena" />
<pin polarity="Input" x="0" y="272" name="clka" />
<pin polarity="Input" x="0" y="432" name="addrb[11:0]" />
<pin polarity="Input" x="0" y="496" name="enb" />
<pin polarity="Input" x="0" y="624" name="clkb" />
<pin polarity="Output" x="576" y="80" name="douta[7:0]" />
<pin polarity="Output" x="576" y="368" name="doutb[7:0]" />
<graph>
<text style="fontsize:40;fontname:Arial" x="32" y="32">spiloopmem</text>
<rect width="512" x="32" y="32" height="1344" />
<line x2="32" y1="80" y2="80" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="80" type="pin addra[11:0]" />
<line x2="32" y1="144" y2="144" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="144" type="pin ena" />
<line x2="32" y1="272" y2="272" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="272" type="pin clka" />
<line x2="32" y1="432" y2="432" style="linewidth:W" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="432" type="pin addrb[11:0]" />
<line x2="32" y1="496" y2="496" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="496" type="pin enb" />
<line x2="32" y1="624" y2="624" x1="0" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="36" y="624" type="pin clkb" />
<line x2="544" y1="80" y2="80" style="linewidth:W" x1="576" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="80" type="pin douta[7:0]" />
<line x2="544" y1="368" y2="368" style="linewidth:W" x1="576" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="540" y="368" type="pin doutb[7:0]" />
</graph>
</symbol>
/*******************************************************************************
* This file is owned and controlled by Xilinx and must be used solely *
* for design, simulation, implementation and creation of design files *
* limited to Xilinx devices or technologies. Use with non-Xilinx *
* devices or technologies is expressly prohibited and immediately *
* terminates your license. *
* *
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY *
* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. 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. *
* *
* Xilinx products are not intended for use in life support appliances, *
* devices, or systems. Use in such applications are expressly *
* prohibited. *
* *
* (c) Copyright 1995-2012 Xilinx, Inc. *
* All rights reserved. *
*******************************************************************************/
// You must compile the wrapper file spiloopmem.v when simulating
// the core, spiloopmem. When compiling the wrapper file, be sure to
// reference the XilinxCoreLib Verilog simulation library. For detailed
// instructions, please refer to the "CORE Generator Help".
// The synthesis directives "translate_off/translate_on" specified below are
// supported by Xilinx, Mentor Graphics and Synplicity synthesis
// tools. Ensure they are correct for your synthesis tool(s).
`timescale 1ns/1ps
module spiloopmem(
clka,
ena,
wea,
addra,
dina,
clkb,
enb,
addrb,
doutb
);
input clka;
input ena;
input [0 : 0] wea;
input [11 : 0] addra;
input [7 : 0] dina;
input clkb;
input enb;
input [11 : 0] addrb;
output [7 : 0] doutb;
// synthesis translate_off
BLK_MEM_GEN_V6_2 #(
.C_ADDRA_WIDTH(12),
.C_ADDRB_WIDTH(12),
.C_ALGORITHM(1),
.C_AXI_ID_WIDTH(4),
.C_AXI_SLAVE_TYPE(0),
.C_AXI_TYPE(1),
.C_BYTE_SIZE(9),
.C_COMMON_CLK(0),
.C_DEFAULT_DATA("0"),
.C_DISABLE_WARN_BHV_COLL(0),
.C_DISABLE_WARN_BHV_RANGE(0),
.C_FAMILY("spartan6"),
.C_HAS_AXI_ID(0),
.C_HAS_ENA(1),
.C_HAS_ENB(1),
.C_HAS_INJECTERR(0),
.C_HAS_MEM_OUTPUT_REGS_A(0),
.C_HAS_MEM_OUTPUT_REGS_B(0),
.C_HAS_MUX_OUTPUT_REGS_A(0),
.C_HAS_MUX_OUTPUT_REGS_B(0),
.C_HAS_REGCEA(0),
.C_HAS_REGCEB(0),
.C_HAS_RSTA(0),
.C_HAS_RSTB(0),
.C_HAS_SOFTECC_INPUT_REGS_A(0),
.C_HAS_SOFTECC_OUTPUT_REGS_B(0),
.C_INIT_FILE_NAME("no_coe_file_loaded"),
.C_INITA_VAL("0"),
.C_INITB_VAL("0"),
.C_INTERFACE_TYPE(0),
.C_LOAD_INIT_FILE(0),
.C_MEM_TYPE(1),
.C_MUX_PIPELINE_STAGES(0),
.C_PRIM_TYPE(1),
.C_READ_DEPTH_A(4096),
.C_READ_DEPTH_B(4096),
.C_READ_WIDTH_A(8),
.C_READ_WIDTH_B(8),
.C_RST_PRIORITY_A("CE"),
.C_RST_PRIORITY_B("CE"),
.C_RST_TYPE("SYNC"),
.C_RSTRAM_A(0),
.C_RSTRAM_B(0),
.C_SIM_COLLISION_CHECK("ALL"),
.C_USE_BYTE_WEA(0),
.C_USE_BYTE_WEB(0),
.C_USE_DEFAULT_DATA(0),
.C_USE_ECC(0),
.C_USE_SOFTECC(0),
.C_WEA_WIDTH(1),
.C_WEB_WIDTH(1),
.C_WRITE_DEPTH_A(4096),
.C_WRITE_DEPTH_B(4096),
.C_WRITE_MODE_A("WRITE_FIRST"),
.C_WRITE_MODE_B("WRITE_FIRST"),
.C_WRITE_WIDTH_A(8),
.C_WRITE_WIDTH_B(8),
.C_XDEVICEFAMILY("spartan6")
)
inst (
.CLKA(clka),
.ENA(ena),
.WEA(wea),
.ADDRA(addra),
.DINA(dina),
.CLKB(clkb),
.ENB(enb),
.ADDRB(addrb),
.DOUTB(doutb),
.RSTA(),
.REGCEA(),
.DOUTA(),
.RSTB(),
.REGCEB(),
.WEB(),
.DINB(),
.INJECTSBITERR(),
.INJECTDBITERR(),
.SBITERR(),
.DBITERR(),
.RDADDRECC(),
.S_ACLK(),
.S_ARESETN(),
.S_AXI_AWID(),
.S_AXI_AWADDR(),
.S_AXI_AWLEN(),
.S_AXI_AWSIZE(),
.S_AXI_AWBURST(),
.S_AXI_AWVALID(),
.S_AXI_AWREADY(),
.S_AXI_WDATA(),
.S_AXI_WSTRB(),
.S_AXI_WLAST(),
.S_AXI_WVALID(),
.S_AXI_WREADY(),
.S_AXI_BID(),
.S_AXI_BRESP(),
.S_AXI_BVALID(),
.S_AXI_BREADY(),
.S_AXI_ARID(),
.S_AXI_ARADDR(),
.S_AXI_ARLEN(),
.S_AXI_ARSIZE(),
.S_AXI_ARBURST(),
.S_AXI_ARVALID(),
.S_AXI_ARREADY(),
.S_AXI_RID(),
.S_AXI_RDATA(),
.S_AXI_RRESP(),
.S_AXI_RLAST(),
.S_AXI_RVALID(),
.S_AXI_RREADY(),
.S_AXI_INJECTSBITERR(),
.S_AXI_INJECTDBITERR(),
.S_AXI_SBITERR(),
.S_AXI_DBITERR(),
.S_AXI_RDADDRECC()
);
// synthesis translate_on
endmodule
/*******************************************************************************
* This file is owned and controlled by Xilinx and must be used solely *
* for design, simulation, implementation and creation of design files *
* limited to Xilinx devices or technologies. Use with non-Xilinx *
* devices or technologies is expressly prohibited and immediately *
* terminates your license. *
* *
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY *
* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. 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. *
* *
* Xilinx products are not intended for use in life support appliances, *
* devices, or systems. Use in such applications are expressly *
* prohibited. *
* *
* (c) Copyright 1995-2012 Xilinx, Inc. *
* All rights reserved. *
*******************************************************************************/
/*******************************************************************************
* Generated from core with identifier: xilinx.com:ip:blk_mem_gen:6.2 *
* *
* The Xilinx LogiCORE IP Block Memory Generator replaces the Dual Port *
* Block Memory and Single Port Block Memory LogiCOREs, but is not a *
* direct drop-in replacement. It should be used in all new Xilinx *
* designs. The core supports RAM and ROM functions over a wide range of *
* widths and depths. Use this core to generate block memories with *
* symmetric or asymmetric read and write port widths, as well as cores *
* which can perform simultaneous write operations to separate *
* locations, and simultaneous read operations from the same location. *
* For more information on differences in interface and feature support *
* between this core and the Dual Port Block Memory and Single Port *
* Block Memory LogiCOREs, please consult the data sheet. *
*******************************************************************************/
// Interfaces:
// AXI_SLAVE_S_AXI
// AXILite_SLAVE_S_AXI
// The following must be inserted into your Verilog file for this
// core to be instantiated. Change the instance name and port connections
// (in parentheses) to your own signal names.
//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG
spiloopmem your_instance_name (
.clka(clka), // input clka
.ena(ena), // input ena
.wea(wea), // input [0 : 0] wea
.addra(addra), // input [11 : 0] addra
.dina(dina), // input [7 : 0] dina
.clkb(clkb), // input clkb
.enb(enb), // input enb
.addrb(addrb), // input [11 : 0] addrb
.doutb(doutb) // output [7 : 0] doutb
);
// INST_TAG_END ------ End INSTANTIATION Template ---------
// You must compile the wrapper file spiloopmem.v when simulating
// the core, spiloopmem. When compiling the wrapper file, be sure to
// reference the XilinxCoreLib Verilog simulation library. For detailed
// instructions, please refer to the "CORE Generator Help".
##############################################################
#
# Xilinx Core Generator version 13.2
# Date: Wed Mar 07 22:04:54 2012
#
##############################################################
#
# This file contains the customisation parameters for a
# Xilinx CORE Generator IP GUI. It is strongly recommended
# that you do not manually alter this file as it may cause
# unexpected and unsupported behavior.
#
##############################################################
#
# Generated from component: xilinx.com:ip:blk_mem_gen:6.2
#
##############################################################
#
# BEGIN Project Options
SET addpads = false
SET asysymbol = true
SET busformat = BusFormatAngleBracketNotRipped
SET createndf = false
SET designentry = Verilog
SET device = xc6slx45
SET devicefamily = spartan6
SET flowvendor = Other
SET formalverification = false
SET foundationsym = false
SET implementationfiletype = Ngc
SET package = csg324
SET removerpms = false
SET simulationfiles = Behavioral
SET speedgrade = -2
SET verilogsim = true
SET vhdlsim = false
# END Project Options
# BEGIN Select
SELECT Block_Memory_Generator xilinx.com:ip:blk_mem_gen:6.2
# END Select
# BEGIN Parameters
CSET additional_inputs_for_power_estimation=false
CSET algorithm=Minimum_Area
CSET assume_synchronous_clk=false
CSET axi_id_width=4
CSET axi_slave_type=Memory_Slave
CSET axi_type=AXI4_Full
CSET byte_size=9
CSET coe_file=no_coe_file_loaded
CSET collision_warnings=ALL
CSET component_name=spiloopmem
CSET disable_collision_warnings=false
CSET disable_out_of_range_warnings=false
CSET ecc=false
CSET ecctype=No_ECC
CSET enable_a=Use_ENA_Pin
CSET enable_b=Use_ENB_Pin
CSET error_injection_type=Single_Bit_Error_Injection
CSET fill_remaining_memory_locations=false
CSET interface_type=Native
CSET load_init_file=false
CSET memory_type=Simple_Dual_Port_RAM
CSET operating_mode_a=WRITE_FIRST
CSET operating_mode_b=WRITE_FIRST
CSET output_reset_value_a=0
CSET output_reset_value_b=0
CSET pipeline_stages=0
CSET port_a_clock=100
CSET port_a_enable_rate=100
CSET port_a_write_rate=50
CSET port_b_clock=100
CSET port_b_enable_rate=100
CSET port_b_write_rate=0
CSET primitive=8kx2
CSET read_width_a=8
CSET read_width_b=8
CSET register_porta_input_of_softecc=false
CSET register_porta_output_of_memory_core=false
CSET register_porta_output_of_memory_primitives=false
CSET register_portb_output_of_memory_core=false
CSET register_portb_output_of_memory_primitives=false
CSET register_portb_output_of_softecc=false
CSET remaining_memory_locations=0
CSET reset_memory_latch_a=false
CSET reset_memory_latch_b=false
CSET reset_priority_a=CE
CSET reset_priority_b=CE
CSET reset_type=SYNC
CSET softecc=false
CSET use_axi_id=false
CSET use_byte_write_enable=false
CSET use_error_injection_pins=false
CSET use_regcea_pin=false
CSET use_regceb_pin=false
CSET use_rsta_pin=false
CSET use_rstb_pin=false
CSET write_depth_a=4096
CSET write_width_a=8
CSET write_width_b=8
# END Parameters
# BEGIN Extra information
MISC pkg_timestamp=2011-03-11T08:24:14.000Z
# END Extra information
GENERATE
# CRC: f197b839
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
<header>
<!-- ISE source project file created by Project Navigator. -->
<!-- -->
<!-- This file contains project source information including a list of -->
<!-- project source files, project and process properties. This file, -->
<!-- along with the project source files, is sufficient to open and -->
<!-- implement in ISE Project Navigator. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
</header>
<version xil_pn:ise_version="13.2" xil_pn:schema_version="2"/>
<files>
<file xil_pn:name="spiloopmem.ngc" xil_pn:type="FILE_NGC">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="3"/>
<association xil_pn:name="Implementation" xil_pn:seqID="3"/>
</file>
<file xil_pn:name="spiloopmem.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="4"/>
<association xil_pn:name="Implementation" xil_pn:seqID="4"/>
<association xil_pn:name="PostMapSimulation" xil_pn:seqID="4"/>
<association xil_pn:name="PostRouteSimulation" xil_pn:seqID="4"/>
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="4"/>
</file>
</files>
<properties>
<property xil_pn:name="Auto Implementation Top" xil_pn:value="false" xil_pn:valueState="non-default"/>
<property xil_pn:name="Device" xil_pn:value="xc6slx45" xil_pn:valueState="non-default"/>
<property xil_pn:name="Device Family" xil_pn:value="Spartan6" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Stop View" xil_pn:value="PreSynthesis" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top" xil_pn:value="Module|spiloopmem" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top File" xil_pn:value="spiloopmem.ngc" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/spiloopmem" xil_pn:valueState="non-default"/>
<property xil_pn:name="Package" xil_pn:value="csg324" xil_pn:valueState="non-default"/>
<property xil_pn:name="Preferred Language" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="Project Generator" xil_pn:value="CoreGen" xil_pn:valueState="non-default"/>
<property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/>
<property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/>
<property xil_pn:name="Speed Grade" xil_pn:value="-2" xil_pn:valueState="non-default"/>
<property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/>
<property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/>
<property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="non-default"/>
<!-- -->
<!-- The following properties are for internal use only. These should not be modified.-->
<!-- -->
<property xil_pn:name="PROP_DesignName" xil_pn:value="spiloopmem" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2012-03-07T17:05:42" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="C2B01838CC5744EE9AD3C0D68A2179D8" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
</properties>
<bindings/>
<libraries/>
<autoManagedFiles>
<!-- The following files are identified by `include statements in verilog -->
<!-- source files and are automatically managed by Project Navigator. -->
<!-- -->
<!-- Do not hand-edit this section, as it will be overwritten when the -->
<!-- project is analyzed based on files automatically identified as -->
<!-- include files. -->
</autoManagedFiles>
</project>
# Output products list for <spiloopmem>
_xmsgs\pn_parser.xmsgs
blk_mem_gen_ds512.pdf
blk_mem_gen_v6_2_readme.txt
spiloopmem.asy
spiloopmem.gise
spiloopmem.ngc
spiloopmem.v
spiloopmem.veo
spiloopmem.xco
spiloopmem.xise
spiloopmem_flist.txt
spiloopmem_ste\example_design\bmg_wrapper.vhd
spiloopmem_ste\example_design\spiloopmem_top.ucf
spiloopmem_ste\example_design\spiloopmem_top.vhd
spiloopmem_ste\example_design\spiloopmem_top.xdc
spiloopmem_ste\implement\implement.sh
spiloopmem_ste\implement\planAhead_rdn.bat
spiloopmem_ste\implement\planAhead_rdn.sh
spiloopmem_ste\implement\planAhead_rdn.tcl
spiloopmem_ste\implement\xst.prj
spiloopmem_ste\implement\xst.scr
spiloopmem_xmdf.tcl
summary.log
--------------------------------------------------------------------------------
--
-- BLK MEM GEN v6.2 Core - Top-level wrapper
--
--------------------------------------------------------------------------------
--
-- (c) Copyright 2006-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.
--
--------------------------------------------------------------------------------
--
-- Filename: bmg_wrapper.vhd
--
-- Description:
-- This is the top-level BMG wrapper (over BMG core).
--
--------------------------------------------------------------------------------
-- Author: IP Solutions Division
--
-- History: August 31, 2005 - First Release
--------------------------------------------------------------------------------
--
-- Configured Core Parameter Values:
-- (Refer to the SIM Parameters table in the datasheet for more information on
-- the these parameters.)
-- C_FAMILY : spartan6
-- C_XDEVICEFAMILY : spartan6
-- C_INTERFACE_TYPE : 0
-- C_AXI_TYPE : 1
-- C_AXI_SLAVE_TYPE : 0
-- C_AXI_ID_WIDTH : 4
-- C_MEM_TYPE : 1
-- C_BYTE_SIZE : 9
-- C_ALGORITHM : 1
-- C_PRIM_TYPE : 1
-- C_LOAD_INIT_FILE : 0
-- C_INIT_FILE_NAME : no_coe_file_loaded
-- C_USE_DEFAULT_DATA : 0
-- C_DEFAULT_DATA : 0
-- C_RST_TYPE : SYNC
-- C_HAS_RSTA : 0
-- C_RST_PRIORITY_A : CE
-- C_RSTRAM_A : 0
-- C_INITA_VAL : 0
-- C_HAS_ENA : 1
-- C_HAS_REGCEA : 0
-- C_USE_BYTE_WEA : 0
-- C_WEA_WIDTH : 1
-- C_WRITE_MODE_A : WRITE_FIRST
-- C_WRITE_WIDTH_A : 8
-- C_READ_WIDTH_A : 8
-- C_WRITE_DEPTH_A : 4096
-- C_READ_DEPTH_A : 4096
-- C_ADDRA_WIDTH : 12
-- C_HAS_RSTB : 0
-- C_RST_PRIORITY_B : CE
-- C_RSTRAM_B : 0
-- C_INITB_VAL : 0
-- C_HAS_ENB : 1
-- C_HAS_REGCEB : 0
-- C_USE_BYTE_WEB : 0
-- C_WEB_WIDTH : 1
-- C_WRITE_MODE_B : WRITE_FIRST
-- C_WRITE_WIDTH_B : 8
-- C_READ_WIDTH_B : 8
-- C_WRITE_DEPTH_B : 4096
-- C_READ_DEPTH_B : 4096
-- C_ADDRB_WIDTH : 12
-- C_HAS_MEM_OUTPUT_REGS_A : 0
-- C_HAS_MEM_OUTPUT_REGS_B : 0
-- C_HAS_MUX_OUTPUT_REGS_A : 0
-- C_HAS_MUX_OUTPUT_REGS_B : 0
-- C_HAS_SOFTECC_INPUT_REGS_A : 0
-- C_HAS_SOFTECC_OUTPUT_REGS_B : 0
-- C_MUX_PIPELINE_STAGES : 0
-- C_USE_ECC : 0
-- C_USE_SOFTECC : 0
-- C_HAS_INJECTERR : 0
-- C_SIM_COLLISION_CHECK : ALL
-- C_COMMON_CLK : 0
-- C_DISABLE_WARN_BHV_COLL : 0
-- C_DISABLE_WARN_BHV_RANGE : 0
--------------------------------------------------------------------------------
-- Library Declarations
--------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
LIBRARY UNISIM;
USE UNISIM.VCOMPONENTS.ALL;
--------------------------------------------------------------------------------
-- Entity Declaration
--------------------------------------------------------------------------------
ENTITY bmg_wrapper IS
PORT (
--Port A
CLKA : IN STD_LOGIC;
RSTA : IN STD_LOGIC; --opt port
ENA : IN STD_LOGIC; --optional port
REGCEA : IN STD_LOGIC; --optional port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
--Port B
CLKB : IN STD_LOGIC;
RSTB : IN STD_LOGIC; --opt port
ENB : IN STD_LOGIC; --optional port
REGCEB : IN STD_LOGIC; --optional port
WEB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRB : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINB : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
--ECC
INJECTSBITERR : IN STD_LOGIC; --optional port
INJECTDBITERR : IN STD_LOGIC; --optional port
SBITERR : OUT STD_LOGIC; --optional port
DBITERR : OUT STD_LOGIC; --optional port
RDADDRECC : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); --optional port
-- AXI BMG Input and Output Port Declarations
-- AXI Global Signals
S_ACLK : IN STD_LOGIC;
S_AXI_AWID : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S_AXI_AWADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_AWLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_AWSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
S_AXI_AWBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_AWVALID : IN STD_LOGIC;
S_AXI_AWREADY : OUT STD_LOGIC;
S_AXI_WDATA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_WSTRB : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
S_AXI_WLAST : IN STD_LOGIC;
S_AXI_WVALID : IN STD_LOGIC;
S_AXI_WREADY : OUT STD_LOGIC;
S_AXI_BID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0');
S_AXI_BRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_BVALID : OUT STD_LOGIC;
S_AXI_BREADY : IN STD_LOGIC;
-- AXI Full/Lite Slave Read (Write side)
S_AXI_ARID : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S_AXI_ARADDR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
S_AXI_ARLEN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_ARSIZE : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
S_AXI_ARBURST : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_ARVALID : IN STD_LOGIC;
S_AXI_ARREADY : OUT STD_LOGIC;
S_AXI_RID : OUT STD_LOGIC_VECTOR(3 DOWNTO 0):= (OTHERS => '0');
S_AXI_RDATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
S_AXI_RRESP : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
S_AXI_RLAST : OUT STD_LOGIC;
S_AXI_RVALID : OUT STD_LOGIC;
S_AXI_RREADY : IN STD_LOGIC;
-- AXI Full/Lite Sideband Signals
S_AXI_INJECTSBITERR : IN STD_LOGIC;
S_AXI_INJECTDBITERR : IN STD_LOGIC;
S_AXI_SBITERR : OUT STD_LOGIC;
S_AXI_DBITERR : OUT STD_LOGIC;
S_AXI_RDADDRECC : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);
S_ARESETN : IN STD_LOGIC
);
END bmg_wrapper;
ARCHITECTURE xilinx OF bmg_wrapper IS
COMPONENT spiloopmem_top IS
PORT (
--Port A
ENA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKA : IN STD_LOGIC;
--Port B
ENB : IN STD_LOGIC; --opt port
ADDRB : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKB : IN STD_LOGIC
);
END COMPONENT;
BEGIN
bmg0 : spiloopmem_top
PORT MAP (
--Port A
ENA => ENA,
WEA => WEA,
ADDRA => ADDRA,
DINA => DINA,
CLKA => CLKA,
--Port B
ENB => ENB,
ADDRB => ADDRB,
DOUTB => DOUTB,
CLKB => CLKB
);
END xilinx;
################################################################################
#
# (c) Copyright 2002 - 2010 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.
#
################################################################################
# Tx Core Period Constraint. This constraint can be modified, and is
# valid as long as it is met after place and route.
NET "CLKA" TNM_NET = "CLKA";
NET "CLKB" TNM_NET = "CLKB";
TIMESPEC "TS_CLKA" = PERIOD "CLKA" 25 MHZ;
TIMESPEC "TS_CLKB" = PERIOD "CLKB" 25 MHZ;
################################################################################
--------------------------------------------------------------------------------
--
-- BLK MEM GEN v6.2 Core - Top-level core wrapper
--
--------------------------------------------------------------------------------
--
-- (c) Copyright 2006-2010 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.
--------------------------------------------------------------------------------
--
-- Filename: bmg_wrapper.vhd
--
-- Description:
-- This is the actual BMG core wrapper.
--
--------------------------------------------------------------------------------
-- Author: IP Solutions Division
--
-- History: August 31, 2005 - First Release
--------------------------------------------------------------------------------
--
--------------------------------------------------------------------------------
-- Library Declarations
--------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
LIBRARY UNISIM;
USE UNISIM.VCOMPONENTS.ALL;
--------------------------------------------------------------------------------
-- Entity Declaration
--------------------------------------------------------------------------------
ENTITY spiloopmem_top IS
PORT (
--Inputs - Port A
ENA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKA : IN STD_LOGIC;
--Inputs - Port B
ENB : IN STD_LOGIC; --opt port
ADDRB : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKB : IN STD_LOGIC
);
END spiloopmem_top;
ARCHITECTURE xilinx OF spiloopmem_top IS
COMPONENT BUFG IS
PORT (
I : IN STD_ULOGIC;
O : OUT STD_ULOGIC
);
END COMPONENT;
COMPONENT spiloopmem IS
PORT (
--Port A
ENA : IN STD_LOGIC; --opt port
WEA : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
ADDRA : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DINA : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKA : IN STD_LOGIC;
--Port B
ENB : IN STD_LOGIC; --opt port
ADDRB : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
DOUTB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CLKB : IN STD_LOGIC
);
END COMPONENT;
SIGNAL CLKA_buf : STD_LOGIC;
SIGNAL CLKB_buf : STD_LOGIC;
SIGNAL S_ACLK_buf : STD_LOGIC;
BEGIN
bufg_A : BUFG
PORT MAP (
I => CLKA,
O => CLKA_buf
);
bufg_B : BUFG
PORT MAP (
I => CLKB,
O => CLKB_buf
);
bmg0 : spiloopmem
PORT MAP (
--Port A
ENA => ENA,
WEA => WEA,
ADDRA => ADDRA,
DINA => DINA,
CLKA => CLKA_buf,
--Port B
ENB => ENB,
ADDRB => ADDRB,
DOUTB => DOUTB,
CLKB => CLKB_buf
);
END xilinx;
################################################################################
#
# (c) Copyright 2002 - 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.
#
################################################################################
# Core Period Constraint. This constraint can be modified, and is
# valid as long as it is met after place and route.
create_clock -name "TS_CLKA" -period 20.0 [ get_ports CLKA ]
create_clock -name "TS_CLKB" -period 20.0 [ get_ports CLKB ]
################################################################################
#!/bin/sh
# Clean up the results directory
rm -rf results
mkdir results
#Synthesize the Wrapper Files
echo 'Synthesizing XST wrapper file (core_top.vhd) with XST';
echo 'Synthesizing example design with XST';
xst -ifn xst.scr
cp spiloopmem_top.ngc ./results/
# Copy the netlist generated by Coregen
echo 'Copying files from the netlist directory to the results directory'
cp ../../spiloopmem.ngc results/
# Copy the constraints files generated by Coregen
echo 'Copying files from constraints directory to results directory'
cp ../example_design/spiloopmem_top.ucf results/
cd results
echo 'Running ngdbuild'
ngdbuild -p xc6slx45-csg324-2 spiloopmem_top
echo 'Running map'
map spiloopmem_top -o mapped.ncd -pr i
echo 'Running par'
par mapped.ncd routed.ncd
echo 'Running trce'
trce -e 10 routed.ncd mapped.pcf -o routed
echo 'Running design through bitgen'
bitgen -w routed
echo 'Running netgen to create gate level Verilog model'
netgen -ofmt verilog -sim -tm spiloopmem_top -pcf mapped.pcf -w routed.ncd routed.v
cp routed.sdf ../../production/timing/
#!/bin/sh
rem (c) Copyright 2009 - 2010 Xilinx, Inc. All rights reserved.
rem
rem This file contains confidential and proprietary information
rem of Xilinx, Inc. and is protected under U.S. and
rem international copyright and other intellectual property
rem laws.
rem
rem DISCLAIMER
rem This disclaimer is not a license and does not grant any
rem rights to the materials distributed herewith. Except as
rem otherwise provided in a valid license issued to you by
rem Xilinx, and to the maximum extent permitted by applicable
rem law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
rem WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
rem AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
rem BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
rem INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
rem (2) Xilinx shall not be liable (whether in contract or tort,
rem including negligence, or under any other theory of
rem liability) for any loss or damage of any kind or nature
rem related to, arising under or in connection with these
rem materials, including for any direct, or any indirect,
rem special, incidental, or consequential loss or damage
rem (including loss of data, profits, goodwill, or any type of
rem loss or damage suffered as a result of any action brought
rem by a third party) even if such damage or loss was
rem reasonably foreseeable or Xilinx had been advised of the
rem possibility of the same.
rem
rem CRITICAL APPLICATIONS
rem Xilinx products are not designed or intended to be fail-
rem safe, or for use in any application requiring fail-safe
rem performance, such as life-support or safety devices or
rem systems, Class III medical devices, nuclear facilities,
rem applications related to the deployment of airbags, or any
rem other applications that could lead to death, personal
rem injury, or severe property or environmental damage
rem (individually and collectively, "Critical
rem Applications"). Customer assumes the sole risk and
rem liability of any use of Xilinx products in Critical
rem Applications, subject only to applicable laws and
rem regulations governing limitations on product liability.
rem
rem THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
rem PART OF THIS FILE AT ALL TIMES.
rem -----------------------------------------------------------------------------
rem Script to synthesize and implement the Coregen FIFO Generator
rem -----------------------------------------------------------------------------
rmdir /S /Q results
mkdir results
cd results
copy ..\..\..\tmp\spiloopmem.edf .
planAhead -mode batch -source ..\planAhead_rdn.tcl
#!/bin/sh
# (c) Copyright 2009 - 2010 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.
#-----------------------------------------------------------------------------
# Script to synthesize and implement the Coregen FIFO Generator
#-----------------------------------------------------------------------------
rm -rf results
mkdir results
cd results
cp ../../../tmp/spiloopmem.edf .
planAhead -mode batch -source ../planAhead_rdn.tcl
# (c) Copyright 2009 - 2010 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.
set device xc6slx45csg324-2
set projName spiloopmem
set design spiloopmem
set projDir [file dirname [info script]]
create_project $projName $projDir/results/$projName -part $device -force
set_property design_mode RTL [current_fileset -srcset]
set top_module spiloopmem_top
add_files -norecurse {../../example_design/spiloopmem_top.vhd}
add_files -norecurse {./spiloopmem.edf}
import_files -fileset [get_filesets constrs_1] -force -norecurse {../../example_design/spiloopmem_top.xdc}
set_property top spiloopmem_top [get_property srcset [current_run]]
synth_design
opt_design
place_design
route_design
write_sdf -rename_top_module spiloopmem_top -file routed.sdf
write_verilog -nolib -mode sim -sdf_anno false -rename_top_module spiloopmem_top routed.v
report_timing -nworst 30 -path_type full -file routed.twr
report_drc -file routed.drc
#write_bitstream
run
-ifmt VHDL
-ent spiloopmem_top
-p xc6slx45-csg324-2
-ifn xst.prj
-write_timing_constraints No
-iobuf YES
-max_fanout 100
-ofn spiloopmem_top
-ofmt NGC
-bus_delimiter ()
-hierarchy_separator /
-case Maintain
# The package naming convention is <core_name>_xmdf
package provide spiloopmem_xmdf 1.0
# This includes some utilities that support common XMDF operations
package require utilities_xmdf
# Define a namespace for this package. The name of the name space
# is <core_name>_xmdf
namespace eval ::spiloopmem_xmdf {
# Use this to define any statics
}
# Function called by client to rebuild the params and port arrays
# Optional when the use context does not require the param or ports
# arrays to be available.
proc ::spiloopmem_xmdf::xmdfInit { instance } {
# Variable containing name of library into which module is compiled
# Recommendation: <module_name>
# Required
utilities_xmdf::xmdfSetData $instance Module Attributes Name spiloopmem
}
# ::spiloopmem_xmdf::xmdfInit
# Function called by client to fill in all the xmdf* data variables
# based on the current settings of the parameters
proc ::spiloopmem_xmdf::xmdfApplyParams { instance } {
set fcount 0
# Array containing libraries that are assumed to exist
# Examples include unisim and xilinxcorelib
# Optional
# In this example, we assume that the unisim library will
# be available to the simulation and synthesis tool
utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library
utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_ds512.pdf
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path blk_mem_gen_v6_2_readme.txt
utilities_xmdf::xmdfSetData $instance FileSet $fcount type text
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem.asy
utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem.ngc
utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem.v
utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem.veo
utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem.xco
utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/example_design/bmg_wrapper.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/example_design/spiloopmem_top.ucf
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/example_design/spiloopmem_top.vhd
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/example_design/spiloopmem_top.xdc
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/implement/implement.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/implement/planAhead_rdn.bat
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/implement/planAhead_rdn.sh
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/implement/planAhead_rdn.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/implement/xst.prj
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_ste/implement/xst.scr
utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path spiloopmem_xmdf.tcl
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path summary.log
utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView
incr fcount
utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module spiloopmem
incr fcount
}
# ::gen_comp_name_xmdf::xmdfApplyParams
User Configuration
-------------------------------------
Algorithm : Minimum_Area
Memory Type : Simple_Dual_Port_RAM
Port A Write Width : 8
Port B Read Width : 8
Memory Depth : 4096
--------------------------------------------------------------
Block RAM resource(s) (9K BRAMs) : 0
Block RAM resource(s) (18K BRAMs) : 2
--------------------------------------------------------------
Clock A Frequency : 100
Port A Enable Rate : 100
Port A Write Rate : 50
----------------------------------------------------------
Estimated Power for IP : 5.357579 mW
----------------------------------------------------------
SET_FLAG DEBUG FALSE
SET_FLAG MODE INTERACTIVE
SET_FLAG STANDALONE_MODE FALSE
SET_PREFERENCE devicefamily spartan6
SET_PREFERENCE device xc6slx45
SET_PREFERENCE speedgrade -2
SET_PREFERENCE package csg324
SET_PREFERENCE verilogsim true
SET_PREFERENCE vhdlsim false
SET_PREFERENCE simulationfiles Behavioral
SET_PREFERENCE busformat BusFormatAngleBracketNotRipped
SET_PREFERENCE outputdirectory C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/
SET_PREFERENCE workingdirectory C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/
SET_PREFERENCE subworkingdirectory C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/
SET_PREFERENCE transientdirectory C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/
SET_PREFERENCE designentry Verilog
SET_PREFERENCE flowvendor Other
SET_PREFERENCE addpads false
SET_PREFERENCE projectname coregen
SET_PREFERENCE formalverification false
SET_PREFERENCE asysymbol false
SET_PREFERENCE implementationfiletype Ngc
SET_PREFERENCE foundationsym false
SET_PREFERENCE createndf false
SET_PREFERENCE removerpms false
SET_PARAMETER Component_Name spiloopmem
SET_PARAMETER Interface_Type Native
SET_PARAMETER AXI_Type AXI4_Full
SET_PARAMETER AXI_Slave_Type Memory_Slave
SET_PARAMETER Use_AXI_ID false
SET_PARAMETER AXI_ID_Width 4
SET_PARAMETER Memory_Type Simple_Dual_Port_RAM
SET_PARAMETER ecctype No_ECC
SET_PARAMETER ECC false
SET_PARAMETER softecc false
SET_PARAMETER Use_Error_Injection_Pins false
SET_PARAMETER Error_Injection_Type Single_Bit_Error_Injection
SET_PARAMETER Use_Byte_Write_Enable false
SET_PARAMETER Byte_Size 9
SET_PARAMETER Algorithm Minimum_Area
SET_PARAMETER Primitive 8kx2
SET_PARAMETER Assume_Synchronous_Clk false
SET_PARAMETER Write_Width_A 8
SET_PARAMETER Write_Depth_A 4096
SET_PARAMETER Read_Width_A 8
SET_PARAMETER Operating_Mode_A WRITE_FIRST
SET_PARAMETER Enable_A Use_ENA_Pin
SET_PARAMETER Write_Width_B 8
SET_PARAMETER Read_Width_B 8
SET_PARAMETER Operating_Mode_B WRITE_FIRST
SET_PARAMETER Enable_B Use_ENB_Pin
SET_PARAMETER Register_PortA_Output_of_Memory_Primitives false
SET_PARAMETER Register_PortA_Output_of_Memory_Core false
SET_PARAMETER Use_REGCEA_Pin false
SET_PARAMETER Register_PortB_Output_of_Memory_Primitives false
SET_PARAMETER Register_PortB_Output_of_Memory_Core false
SET_PARAMETER Use_REGCEB_Pin false
SET_PARAMETER register_porta_input_of_softecc false
SET_PARAMETER register_portb_output_of_softecc false
SET_PARAMETER Pipeline_Stages 0
SET_PARAMETER Load_Init_File false
SET_PARAMETER Coe_File no_coe_file_loaded
SET_PARAMETER Fill_Remaining_Memory_Locations false
SET_PARAMETER Remaining_Memory_Locations 0
SET_PARAMETER Use_RSTA_Pin false
SET_PARAMETER Reset_Memory_Latch_A false
SET_PARAMETER Reset_Priority_A CE
SET_PARAMETER Output_Reset_Value_A 0
SET_PARAMETER Use_RSTB_Pin false
SET_PARAMETER Reset_Memory_Latch_B false
SET_PARAMETER Reset_Priority_B CE
SET_PARAMETER Output_Reset_Value_B 0
SET_PARAMETER Reset_Type SYNC
SET_PARAMETER Additional_Inputs_for_Power_Estimation false
SET_PARAMETER Port_A_Clock 100
SET_PARAMETER Port_A_Write_Rate 50
SET_PARAMETER Port_B_Clock 100
SET_PARAMETER Port_B_Write_Rate 0
SET_PARAMETER Port_A_Enable_Rate 100
SET_PARAMETER Port_B_Enable_Rate 100
SET_PARAMETER Collision_Warnings ALL
SET_PARAMETER Disable_Collision_Warnings false
SET_PARAMETER Disable_Out_of_Range_Warnings false
SET_CORE_NAME Block Memory Generator
SET_CORE_VERSION 6.2
SET_CORE_VLNV xilinx.com:ip:blk_mem_gen:6.2
SET_CORE_CLASS com.xilinx.ip.blk_mem_gen_v6_2.blk_mem_gen_v6_2
SET_CORE_PATH C:/Xilinx/13.2/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/blk_mem_gen_v6_2
SET_CORE_GUIPATH C:/Xilinx/13.2/ISE_DS/ISE/coregen/ip/xilinx/primary/com/xilinx/ip/blk_mem_gen_v6_2/gui/blk_mem_gen_v6_2.tcl
SET_CORE_DATASHEET C:\Xilinx\13.2\ISE_DS\ISE\coregen\ip\xilinx\primary\com\xilinx\ip\blk_mem_gen_v6_2\doc\blk_mem_gen_ds512.pdf
ADD_CORE_DOCUMENT <C:\Xilinx\13.2\ISE_DS\ISE\coregen\ip\xilinx\primary\com\xilinx\ip\blk_mem_gen_v6_2\doc\blk_mem_gen_ds512.pdf><blk_mem_gen_ds512.pdf>
ADD_CORE_DOCUMENT <C:\Xilinx\13.2\ISE_DS\ISE\coregen\ip\xilinx\primary\com\xilinx\ip\blk_mem_gen_v6_2\doc\blk_mem_gen_v6_2_vinfo.html><blk_mem_gen_v6_2_vinfo.html>
SET_PARAMETER use_rstb_pin false
SET_PARAMETER pipeline_stages 0
SET_PARAMETER assume_synchronous_clk false
SET_PARAMETER use_regcea_pin false
SET_PARAMETER axi_id_width 4
SET_PARAMETER softecc false
SET_PARAMETER load_init_file false
SET_PARAMETER port_a_write_rate 50
SET_PARAMETER disable_collision_warnings false
SET_PARAMETER use_byte_write_enable false
SET_PARAMETER ecc false
SET_PARAMETER primitive 8kx2
SET_PARAMETER port_b_clock 100
SET_PARAMETER remaining_memory_locations 0
SET_PARAMETER memory_type Simple_Dual_Port_RAM
SET_PARAMETER register_porta_input_of_softecc false
SET_PARAMETER port_a_clock 100
SET_PARAMETER read_width_a 8
SET_PARAMETER disable_out_of_range_warnings false
SET_PARAMETER read_width_b 8
SET_PARAMETER register_portb_output_of_softecc false
SET_PARAMETER byte_size 9
SET_PARAMETER register_portb_output_of_memory_core false
SET_PARAMETER use_regceb_pin false
SET_PARAMETER register_porta_output_of_memory_core false
SET_PARAMETER reset_memory_latch_a false
SET_PARAMETER reset_memory_latch_b false
SET_PARAMETER register_porta_output_of_memory_primitives false
SET_PARAMETER use_error_injection_pins false
SET_PARAMETER enable_a Use_ENA_Pin
SET_PARAMETER enable_b Use_ENB_Pin
SET_PARAMETER port_a_enable_rate 100
SET_PARAMETER use_axi_id false
SET_PARAMETER write_depth_a 4096
SET_PARAMETER algorithm Minimum_Area
SET_PARAMETER output_reset_value_a 0
SET_PARAMETER output_reset_value_b 0
SET_PARAMETER error_injection_type Single_Bit_Error_Injection
SET_PARAMETER port_b_write_rate 0
SET_PARAMETER ecctype No_ECC
SET_PARAMETER write_width_a 8
SET_PARAMETER write_width_b 8
SET_PARAMETER component_name spiloopmem
SET_PARAMETER reset_priority_a CE
SET_PARAMETER reset_priority_b CE
SET_PARAMETER operating_mode_a WRITE_FIRST
SET_PARAMETER additional_inputs_for_power_estimation false
SET_PARAMETER operating_mode_b WRITE_FIRST
SET_PARAMETER interface_type Native
SET_PARAMETER reset_type SYNC
SET_PARAMETER register_portb_output_of_memory_primitives false
SET_PARAMETER use_rsta_pin false
SET_PARAMETER port_b_enable_rate 100
SET_PARAMETER coe_file no_coe_file_loaded
SET_PARAMETER fill_remaining_memory_locations false
SET_PARAMETER axi_slave_type Memory_Slave
SET_PARAMETER axi_type AXI4_Full
SET_PARAMETER collision_warnings ALL
SET_ERROR_CODE 2
SET_ERROR_MSG CANCEL: Customization cancelled.
SET_ERROR_TEXT Finished initializing IP model.
User Configuration
-------------------------------------
Algorithm : Minimum_Area
Memory Type : Simple_Dual_Port_RAM
Port A Write Width : 8
Port B Read Width : 8
Memory Depth : 4096
--------------------------------------------------------------
Block RAM resource(s) (9K BRAMs) : 0
Block RAM resource(s) (18K BRAMs) : 2
--------------------------------------------------------------
Clock A Frequency : 100
Port A Enable Rate : 100
Port A Write Rate : 50
----------------------------------------------------------
Estimated Power for IP : 5.357579 mW
----------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!-- IMPORTANT: This is an internal file that has been generated
by the Xilinx ISE software. Any direct editing or
changes made to this file may result in unpredictable
behavior or data corruption. It is strongly advised that
users do not edit the contents of this file. -->
<messages>
</messages>
<?xml version="1.0" encoding="UTF-8"?>
<!-- IMPORTANT: This is an internal file that has been generated -->
<!-- by the Xilinx ISE software. Any direct editing or -->
<!-- changes made to this file may result in unpredictable -->
<!-- behavior or data corruption. It is strongly advised that -->
<!-- users do not edit the contents of this file. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
<messages>
<msg type="info" file="ProjectMgmt" num="1769" ><arg fmt="%s" index="1">Analyzing Verilog file \&quot;C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/spiloopmem.v\&quot; into library work</arg>
</msg>
</messages>
<?xml version="1.0" encoding="UTF-8"?>
<!-- IMPORTANT: This is an internal file that has been generated
by the Xilinx ISE software. Any direct editing or
changes made to this file may result in unpredictable
behavior or data corruption. It is strongly advised that
users do not edit the contents of this file. -->
<messages>
<msg type="warning" file="UtilitiesC" num="159" delta="old" >Message file &quot;<arg fmt="%s" index="1">usenglish/ip.msg</arg>&quot; wasn&apos;t found.
</msg>
<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">0</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">4</arg>x<arg fmt="%d" index="5">4096</arg> u:<arg fmt="%d" index="6">4</arg>
</msg>
<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">1</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">4</arg>x<arg fmt="%d" index="5">4096</arg> u:<arg fmt="%d" index="6">4</arg>
</msg>
<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">0</arg>: (<arg fmt="%d" index="2">0</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">4</arg>x<arg fmt="%d" index="5">4096</arg> u:<arg fmt="%d" index="6">4</arg>
</msg>
<msg type="info" file="ip" num="0" delta="new" ><arg fmt="%d" index="1">1</arg>: (<arg fmt="%d" index="2">4</arg>,<arg fmt="%d" index="3">0</arg>) : <arg fmt="%d" index="4">4</arg>x<arg fmt="%d" index="5">4096</arg> u:<arg fmt="%d" index="6">4</arg>
</msg>
<msg type="warning" file="HDLCompiler" num="321" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_input_block.vhd" Line 691: Comparison between arrays of unequal length always returns <arg fmt="%s" index="1">FALSE</arg>.
</msg>
<msg type="warning" file="HDLCompiler" num="321" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_input_block.vhd" Line 707: Comparison between arrays of unequal length always returns <arg fmt="%s" index="1">FALSE</arg>.
</msg>
<msg type="warning" file="HDLCompiler" num="746" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_prim_width.vhd" Line 977: Range is empty (null range)
</msg>
<msg type="warning" file="HDLCompiler" num="220" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_prim_width.vhd" Line 977: Assignment ignored
</msg>
<msg type="warning" file="HDLCompiler" num="746" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_prim_width.vhd" Line 978: Range is empty (null range)
</msg>
<msg type="warning" file="HDLCompiler" num="220" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_prim_width.vhd" Line 978: Assignment ignored
</msg>
<msg type="warning" file="HDLCompiler" num="634" delta="new" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_prim_wrapper_s6.vhd" Line 490: Net &lt;<arg fmt="%s" index="1">douta_i[3]</arg>&gt; does not have a driver.
</msg>
<msg type="warning" file="HDLCompiler" num="321" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_generic_cstr.vhd" Line 1544: Comparison between arrays of unequal length always returns <arg fmt="%s" index="1">FALSE</arg>.
</msg>
<msg type="warning" file="HDLCompiler" num="321" delta="old" >"C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\ipcore_dir\tmp\_cg\_dbg\blk_mem_gen_v6_2\blk_mem_gen_generic_cstr.vhd" Line 1557: Comparison between arrays of unequal length always returns <arg fmt="%s" index="1">FALSE</arg>.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">douta</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">rdaddrecc</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_bid</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_bresp</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_rid</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_rdata</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_rresp</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_rdaddrecc</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">sbiterr</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">dbiterr</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_awready</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_wready</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_bvalid</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_arready</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_rlast</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_rvalid</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_sbiterr</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="new" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/spiloopmem.vhd</arg>&quot; line <arg fmt="%s" index="2">160</arg>: Output port &lt;<arg fmt="%s" index="3">s_axi_dbiterr</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">U0</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_AWID&lt;3:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_AWADDR&lt;31:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_AWLEN&lt;7:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_AWSIZE&lt;2:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_AWBURST&lt;1:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_WDATA&lt;7:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_WSTRB&lt;0:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_ARID&lt;3:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_ARADDR&lt;31:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_ARLEN&lt;7:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_ARSIZE&lt;2:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_ARBURST&lt;1:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AClk</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_ARESETN</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_AWVALID</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_WLAST</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_WVALID</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_BREADY</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_ARVALID</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_RREADY</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_INJECTSBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">S_AXI_INJECTDBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="2935" delta="old" >Signal &apos;<arg fmt="%s" index="1">S_AXI_BID</arg>&apos;, unconnected in block &apos;<arg fmt="%s" index="2">blk_mem_gen_v6_2_xst</arg>&apos;, is tied to its initial value (<arg fmt="%s" index="3">0000</arg>).
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_BRESP</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="2935" delta="old" >Signal &apos;<arg fmt="%s" index="1">S_AXI_RID</arg>&apos;, unconnected in block &apos;<arg fmt="%s" index="2">blk_mem_gen_v6_2_xst</arg>&apos;, is tied to its initial value (<arg fmt="%s" index="3">0000</arg>).
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_RDATA</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_RRESP</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_RDADDRECC</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_AWREADY</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_WREADY</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_BVALID</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_ARREADY</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_RLAST</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_RVALID</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_SBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">S_AXI_DBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">WEB&lt;0:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">DINB&lt;7:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">RSTA</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">REGCEA</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">RSTB</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">REGCEB</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTDBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTSBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">INJECTDBITERR_I</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">INJECTSBITERR_I</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">REGCEA&lt;0:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">REGCEB&lt;0:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTSBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTDBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="info" file="Xst" num="3210" delta="old" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/blk_mem_gen_v6_2/blk_mem_gen_generic_cstr.vhd</arg>&quot; line <arg fmt="%s" index="2">1341</arg>: Output port &lt;<arg fmt="%s" index="3">SBITERR</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">ramloop[0].ram.r</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="old" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/blk_mem_gen_v6_2/blk_mem_gen_generic_cstr.vhd</arg>&quot; line <arg fmt="%s" index="2">1341</arg>: Output port &lt;<arg fmt="%s" index="3">DBITERR</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">ramloop[0].ram.r</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="old" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/blk_mem_gen_v6_2/blk_mem_gen_generic_cstr.vhd</arg>&quot; line <arg fmt="%s" index="2">1341</arg>: Output port &lt;<arg fmt="%s" index="3">SBITERR</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">ramloop[1].ram.r</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="info" file="Xst" num="3210" delta="old" >&quot;<arg fmt="%s" index="1">c:/users/mjlyons/workspace/vspi/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/ipcore_dir/tmp/_cg/_dbg/blk_mem_gen_v6_2/blk_mem_gen_generic_cstr.vhd</arg>&quot; line <arg fmt="%s" index="2">1341</arg>: Output port &lt;<arg fmt="%s" index="3">DBITERR</arg>&gt; of the instance &lt;<arg fmt="%s" index="4">ramloop[1].ram.r</arg>&gt; is unconnected or connected to loadless signal.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">RDADDRECC</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">SBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">DBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTSBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTDBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">SBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">DBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">WEB&lt;0:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="new" >Input &lt;<arg fmt="%s" index="1">DINB&lt;3:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="2935" delta="new" >Signal &apos;<arg fmt="%s" index="1">douta_i</arg>&apos;, unconnected in block &apos;<arg fmt="%s" index="2">blk_mem_gen_prim_wrapper_s6_1</arg>&apos;, is tied to its initial value (<arg fmt="%s" index="3">0000</arg>).
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTSBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">INJECTDBITERR</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">SBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">DBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">WEB&lt;0:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="new" >Input &lt;<arg fmt="%s" index="1">DINB&lt;3:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="2935" delta="new" >Signal &apos;<arg fmt="%s" index="1">douta_i</arg>&apos;, unconnected in block &apos;<arg fmt="%s" index="2">blk_mem_gen_prim_wrapper_s6_2</arg>&apos;, is tied to its initial value (<arg fmt="%s" index="3">0000</arg>).
</msg>
<msg type="warning" file="Xst" num="647" delta="new" >Input &lt;<arg fmt="%s" index="1">DOUTA_I&lt;7:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">RDADDRECC_I&lt;11:0&gt;</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">CLKB</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">SBITERR_I</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="647" delta="old" >Input &lt;<arg fmt="%s" index="1">DBITERR_I</arg>&gt; is never used. This port will be preserved and left unconnected if it belongs to a top-level block or it belongs to a sub-block and the hierarchy of this sub-block is preserved.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">RDADDRECC</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">SBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="warning" file="Xst" num="653" delta="old" >Signal &lt;<arg fmt="%s" index="1">DBITERR</arg>&gt; is used but never assigned. This sourceless signal will be automatically connected to value <arg fmt="%s" index="2">GND</arg>.
</msg>
<msg type="info" file="Xst" num="2169" delta="old" >HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources. Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems.
</msg>
</messages>
<?xml version='1.0' encoding='utf-8'?>
<!--This is an ISE project configuration file.-->
<!--It holds project specific layout data for the projectmgr plugin.-->
<!--Copyright (c) 1995-2009 Xilinx, Inc. All rights reserved.-->
<Project version="2" owner="projectmgr" name="spiifc" >
<!--This is an ISE project configuration file.-->
<ItemView engineview="SynthesisOnly" guiview="Source" compilemode="AutoCompile" >
<ClosedNodes>
<ClosedNodesVersion>2</ClosedNodesVersion>
<ClosedNode>/spiifc - IMP C:|Users|mjlyons|workspace|vSPI|projnav|xps|pcores|spiifc_v1_00_a|hdl|vhdl|spiifc.vhd/PLBV46_SLAVE_BURST_I - plbv46_slave_burst - implementation</ClosedNode>
<ClosedNode>/spiifc - IMP C:|Users|mjlyons|workspace|vSPI|projnav|xps|pcores|spiifc_v1_00_a|hdl|vhdl|spiifc.vhd/PLBV46_SLAVE_BURST_I - plbv46_slave_burst - implementation/I_SLAVE_ATTACHMENT - plb_slave_attachment - implementation</ClosedNode>
<ClosedNode>/spiifc_tb2 C:|Users|mjlyons|workspace|vSPI|test|spi_base|spiifc_tb2.v</ClosedNode>
<ClosedNode>/spiloop C:|Users|mjlyons|workspace|vSPI|src|spi_base|spiloop.v</ClosedNode>
<ClosedNode>/spiwrap C:|Users|mjlyons|workspace|vSPI|src|spi_base|spiwrap.v</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem>spi - spiifc (C:/Users/mjlyons/workspace/vSPI/src/spi_base/spiifc.v)</SelectedItem>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000100000000000000000000000000000000020200000001000000010000006400000225000000020000000000000000000000000200000064ffffffff000000810000000300000002000002250000000100000003000000000000000100000003</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >true</UserChangedColumnWidths>
<CurrentItem>spi - spiifc (C:/Users/mjlyons/workspace/vSPI/src/spi_base/spiifc.v)</CurrentItem>
</ItemView>
<ItemView engineview="SynthesisOnly" sourcetype="DESUT_VHDL_ARCHITECTURE" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>Configure Target Device</ClosedNode>
<ClosedNode>Design Utilities</ClosedNode>
<ClosedNode>Implement Design</ClosedNode>
<ClosedNode>Synthesize - XST</ClosedNode>
<ClosedNode>User Constraints</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem>Synthesize - XST</SelectedItem>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem>Synthesize - XST</CurrentItem>
</ItemView>
<ItemView guiview="File" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
</ClosedNodes>
<SelectedItems/>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000000000000010000000000000000000000000000000000000392000000040101000100000000000000000000000064ffffffff000000810000000000000004000000a800000001000000000000004a00000001000000000000006600000001000000000000023a0000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem>addr_reg_cntr_brst_flex.vhd</CurrentItem>
</ItemView>
<ItemView guiview="Library" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>interrupt_control_v2_01_a</ClosedNode>
<ClosedNode>plbv46_slave_burst_v1_01_a</ClosedNode>
<ClosedNode>proc_common_v3_00_a</ClosedNode>
<ClosedNode>work</ClosedNode>
</ClosedNodes>
<SelectedItems/>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000000000000010000000000000000000000000000000000000109000000010001000100000000000000000000000064ffffffff000000810000000000000001000001090000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem>interrupt_control_v2_01_a</CurrentItem>
</ItemView>
<ItemView engineview="SynthesisOnly" sourcetype="" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>Design Utilities</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem/>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem/>
</ItemView>
<ItemView engineview="SynthesisOnly" sourcetype="DESUT_VERILOG" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>Design Utilities</ClosedNode>
<ClosedNode>Implement Design/Map</ClosedNode>
<ClosedNode>Implement Design/Place &amp; Route</ClosedNode>
<ClosedNode>Implement Design/Translate</ClosedNode>
<ClosedNode>User Constraints</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem></SelectedItem>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem></CurrentItem>
</ItemView>
<ItemView engineview="SynthesisOnly" sourcetype="DESUT_XCO" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
</ClosedNodes>
<SelectedItems>
<SelectedItem/>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem/>
</ItemView>
<SourceProcessView>000000ff00000000000000020000011b0000011b01000000050100000002</SourceProcessView>
<CurrentView>Implementation</CurrentView>
<ItemView engineview="BehavioralSim" guiview="Source" compilemode="AutoCompile" >
<ClosedNodes>
<ClosedNodesVersion>2</ClosedNodesVersion>
<ClosedNode>/spiifc - IMP C:|Users|mjlyons|workspace|vSPI|projnav|xps|pcores|spiifc_v1_00_a|hdl|vhdl|spiifc.vhd</ClosedNode>
<ClosedNode>/spiifc_tb C:|Users|mjlyons|workspace|vSPI|test|spi_base|spiifc_tb.v/uut - spiifc - IMP</ClosedNode>
<ClosedNode>/spiifc_tb C:|Users|mjlyons|workspace|vSPI|test|spi_base|spiifc_writereg_tb.v/uut - spiifc - IMP</ClosedNode>
<ClosedNode>/spiifc_tb2 C:|Users|mjlyons|workspace|vSPI|test|spi_base|spiifc_tb2.v/uut - spiifc - IMP</ClosedNode>
<ClosedNode>/spiloop C:|Users|mjlyons|workspace|vSPI|src|spi_base|spiloop.v/mySpiIfc - spiifc - IMP</ClosedNode>
<ClosedNode>/spiwrap C:|Users|mjlyons|workspace|vSPI|src|spi_base|spiwrap.v/mySpiIfc - spiifc - IMP</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem>spiifc_writereg_tb (C:/Users/mjlyons/workspace/vSPI/test/spi_base/spiifc_writereg_tb.v)</SelectedItem>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff00000000000000010000000100000000000000000000000000000000020200000001000000010000006400000175000000020000000000000000000000000200000064ffffffff000000810000000300000002000001750000000100000003000000000000000100000003</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >true</UserChangedColumnWidths>
<CurrentItem>spiifc_writereg_tb (C:/Users/mjlyons/workspace/vSPI/test/spi_base/spiifc_writereg_tb.v)</CurrentItem>
</ItemView>
<ItemView engineview="BehavioralSim" sourcetype="" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>Design Utilities</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem/>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem/>
</ItemView>
<ItemView engineview="BehavioralSim" sourcetype="DESUT_VERILOG" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
</ClosedNodes>
<SelectedItems>
<SelectedItem>Simulate Behavioral Model</SelectedItem>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem>Simulate Behavioral Model</CurrentItem>
</ItemView>
<ItemView engineview="SynthesisOnly" sourcetype="DESUT_UCF" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>User Constraints</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem/>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem/>
</ItemView>
<ItemView engineview="BehavioralSim" sourcetype="DESUT_VHDL_ARCHITECTURE" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
<ClosedNode>ISim Simulator</ClosedNode>
</ClosedNodes>
<SelectedItems>
<SelectedItem/>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem/>
</ItemView>
<ItemView engineview="BehavioralSim" sourcetype="DESUT_XCO" guiview="Process" >
<ClosedNodes>
<ClosedNodesVersion>1</ClosedNodesVersion>
</ClosedNodes>
<SelectedItems>
<SelectedItem/>
</SelectedItems>
<ScrollbarPosition orientation="vertical" >0</ScrollbarPosition>
<ScrollbarPosition orientation="horizontal" >0</ScrollbarPosition>
<ViewHeaderState orientation="horizontal" >000000ff000000000000000100000001000000000000000000000000000000000000000000000000f8000000010000000100000000000000000000000064ffffffff000000810000000000000001000000f80000000100000000</ViewHeaderState>
<UserChangedColumnWidths orientation="horizontal" >false</UserChangedColumnWidths>
<CurrentItem/>
</ItemView>
</Project>
03
00
00
00
00
00
00
00
00
\ No newline at end of file
01
FF
F0
33
55
12
34
56
78
9A
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<generated_project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
<!-- -->
<!-- For tool use only. Do not edit. -->
<!-- -->
<!-- ProjectNavigator created generated project file. -->
<!-- For use in tracking generated file and other information -->
<!-- allowing preservation of process status. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
<version xmlns="http://www.xilinx.com/XMLSchema">11.1</version>
<sourceproject xmlns="http://www.xilinx.com/XMLSchema" xil_pn:fileType="FILE_XISE" xil_pn:name="spiifc.xise"/>
<files xmlns="http://www.xilinx.com/XMLSchema">
<file xil_pn:fileType="FILE_NCD" xil_pn:name="spiifc_guide.ncd" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_NCD" xil_pn:name="spiloop_guide.ncd" xil_pn:origination="imported"/>
<file xil_pn:fileType="FILE_NCD" xil_pn:name="spiwrap_guide.ncd" xil_pn:origination="imported"/>
</files>
<transforms xmlns="http://www.xilinx.com/XMLSchema">
<transform xil_pn:end_ts="1331743852" xil_pn:in_ck="241267088593728842" xil_pn:name="TRAN_SubProjectAbstractToPreProxy" xil_pn:start_ts="1331743852">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
</transforms>
</generated_project>
project new C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc.xise;
project set family spartan6;
project set device xc6slx45;
project set package csg324;
project set speed -2;
project set top_level_module_type HDL;
project set synthesis_tool "XST (VHDL/Verilog)";
lib_vhdl new spiifc_v1_00_a;
xfile add C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/hdl/vhdl/spiifc.vhd;
xfile add C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/hdl/verilog/user_logic.v;
lib_vhdl new proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/proc_common_pkg.vhd -lib_vhdl proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/ipif_pkg.vhd -lib_vhdl proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_muxcy.vhd -lib_vhdl proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_gate128.vhd -lib_vhdl proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/family_support.vhd -lib_vhdl proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/pselect_f.vhd -lib_vhdl proc_common_v3_00_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/counter_f.vhd -lib_vhdl proc_common_v3_00_a;
lib_vhdl new plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/flex_addr_cntr.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/addr_reg_cntr_brst_flex.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_address_decoder.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/burst_support.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/wr_buffer.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/be_reset_gen.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_slave_attachment.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/data_mirror_128.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plbv46_slave_burst.vhd -lib_vhdl plbv46_slave_burst_v1_01_a;
lib_vhdl new interrupt_control_v2_01_a;
xfile add C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/interrupt_control_v2_01_a/hdl/vhdl/interrupt_control.vhd -lib_vhdl interrupt_control_v2_01_a;
project close;
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
<header>
<!-- ISE source project file created by Project Navigator. -->
<!-- -->
<!-- This file contains project source information including a list of -->
<!-- project source files, project and process properties. This file, -->
<!-- along with the project source files, is sufficient to open and -->
<!-- implement in ISE Project Navigator. -->
<!-- -->
<!-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. -->
</header>
<version xil_pn:ise_version="13.2" xil_pn:schema_version="2"/>
<files>
<file xil_pn:name="../../hdl/vhdl/spiifc.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="21"/>
</file>
<file xil_pn:name="../../hdl/verilog/user_logic.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="20"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/proc_common_pkg.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="1"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/ipif_pkg.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="6"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_muxcy.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="2"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_gate128.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="5"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/family_support.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="3"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/pselect_f.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="4"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/counter_f.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="7"/>
<library xil_pn:name="proc_common_v3_00_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/flex_addr_cntr.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="8"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/addr_reg_cntr_brst_flex.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="13"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_address_decoder.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="10"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/burst_support.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="11"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/wr_buffer.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="9"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/be_reset_gen.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="12"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_slave_attachment.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="14"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/data_mirror_128.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="15"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plbv46_slave_burst.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="18"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
</file>
<file xil_pn:name="C:/Xilinx/13.2/ISE_DS/EDK/hw/XilinxProcessorIPLib/pcores/interrupt_control_v2_01_a/hdl/vhdl/interrupt_control.vhd" xil_pn:type="FILE_VHDL">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="19"/>
<library xil_pn:name="interrupt_control_v2_01_a"/>
</file>
<file xil_pn:name="ipcore_dir/buffermem.xco" xil_pn:type="FILE_COREGEN">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="17"/>
</file>
<file xil_pn:name="../../../../../../src/spi_base/spiifc.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="1"/>
<association xil_pn:name="Implementation" xil_pn:seqID="16"/>
</file>
<file xil_pn:name="../../../../../../src/spi_base/spiwrap.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="../../../../../../test/spi_base/spiifc_tb.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="PostMapSimulation" xil_pn:seqID="92"/>
<association xil_pn:name="PostRouteSimulation" xil_pn:seqID="92"/>
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="92"/>
</file>
<file xil_pn:name="../../../../../../test/spi_base/spiifc_tb2.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="../../../../../ucf/atlys/spiwrap.ucf" xil_pn:type="FILE_UCF">
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="ipcore_dir/spiloopmem.xco" xil_pn:type="FILE_COREGEN">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="../../../../../../src/spi_base/spiloop.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="0"/>
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="../../../../../ucf/atlys/spiloop.ucf" xil_pn:type="FILE_UCF">
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="../../../../../../test/spi_base/rc-bytes-writereg.txt" xil_pn:type="FILE_USERDOC"/>
<file xil_pn:name="../../../../../../test/spi_base/spiifc_writereg_tb.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="2"/>
<association xil_pn:name="PostMapSimulation" xil_pn:seqID="107"/>
<association xil_pn:name="PostRouteSimulation" xil_pn:seqID="107"/>
<association xil_pn:name="PostTranslateSimulation" xil_pn:seqID="107"/>
</file>
<file xil_pn:name="ipcore_dir/buffermem.xise" xil_pn:type="FILE_COREGENISE">
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
<file xil_pn:name="ipcore_dir/spiloopmem.xise" xil_pn:type="FILE_COREGENISE">
<association xil_pn:name="Implementation" xil_pn:seqID="0"/>
</file>
</files>
<properties>
<property xil_pn:name="AES Initial Vector spartan6" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="AES Key (Hex String) spartan6" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Add I/O Buffers" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Allow Logic Optimization Across Hierarchy" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Allow SelectMAP Pins to Persist" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Allow Unexpanded Blocks" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Allow Unmatched LOC Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Allow Unmatched Timing Group Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Analysis Effort Level" xil_pn:value="Standard" xil_pn:valueState="default"/>
<property xil_pn:name="Asynchronous To Synchronous" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Auto Implementation Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Auto Implementation Top" xil_pn:value="false" xil_pn:valueState="non-default"/>
<property xil_pn:name="Automatic BRAM Packing" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Automatically Insert glbl Module in the Netlist" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Automatically Run Generate Target PROM/ACE File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="BRAM Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
<property xil_pn:name="Bring Out Global Set/Reset Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Bring Out Global Tristate Net as a Port" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Bus Delimiter" xil_pn:value="&lt;>" xil_pn:valueState="default"/>
<property xil_pn:name="Case" xil_pn:value="Maintain" xil_pn:valueState="default"/>
<property xil_pn:name="Case Implementation Style" xil_pn:value="None" xil_pn:valueState="default"/>
<property xil_pn:name="Change Device Speed To" xil_pn:value="-2" xil_pn:valueState="default"/>
<property xil_pn:name="Change Device Speed To Post Trace" xil_pn:value="-2" xil_pn:valueState="default"/>
<property xil_pn:name="Combinatorial Logic Optimization" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Compile EDK Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Compile SIMPRIM (Timing) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Compile UNISIM (Functional) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Compile XilinxCoreLib (CORE Generator) Simulation Library" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Compile for HDL Debugging" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Configuration Pin Done" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
<property xil_pn:name="Configuration Pin Program" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
<property xil_pn:name="Configuration Rate spartan6" xil_pn:value="2" xil_pn:valueState="default"/>
<property xil_pn:name="Correlate Output to Input Design" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create ASCII Configuration File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create Binary Configuration File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create Bit File" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Create I/O Pads from Ports" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create IEEE 1532 Configuration File spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create Logic Allocation File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create Mask File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Create ReadBack Data Files" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Cross Clock Analysis" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Custom Waveform Configuration File Behav" xil_pn:value="tb_writereg.wcfg" xil_pn:valueState="non-default"/>
<property xil_pn:name="DSP Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
<property xil_pn:name="Delay Values To Be Read from SDF" xil_pn:value="Setup Time" xil_pn:valueState="default"/>
<property xil_pn:name="Device" xil_pn:value="xc6slx45" xil_pn:valueState="non-default"/>
<property xil_pn:name="Device Family" xil_pn:value="Spartan6" xil_pn:valueState="non-default"/>
<property xil_pn:name="Device Speed Grade/Select ABS Minimum" xil_pn:value="-2" xil_pn:valueState="default"/>
<property xil_pn:name="Disable Detailed Package Model Insertion" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Do Not Escape Signal and Instance Names in Netlist" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Done (Output Events)" xil_pn:value="Default (4)" xil_pn:valueState="default"/>
<property xil_pn:name="Drive Awake Pin During Suspend/Wake Sequence spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Drive Done Pin High" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable BitStream Compression" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Cyclic Redundancy Checking (CRC) spartan6" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Debugging of Serial Mode BitStream" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable External Master Clock spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Hardware Co-Simulation" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Internal Done Pipe" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Message Filtering" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Multi-Pin Wake-Up Suspend Mode spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Multi-Threading" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Multi-Threading par spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Outputs (Output Events)" xil_pn:value="Default (5)" xil_pn:valueState="default"/>
<property xil_pn:name="Enable Suspend/Wake Global Set/Reset spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Encrypt Bitstream spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Encrypt Key Select spartan6" xil_pn:value="BBRAM" xil_pn:valueState="default"/>
<property xil_pn:name="Equivalent Register Removal Map" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Equivalent Register Removal XST" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Evaluation Development Board" xil_pn:value="None Specified" xil_pn:valueState="default"/>
<property xil_pn:name="Exclude Compilation of Deprecated EDK Cores" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Exclude Compilation of EDK Sub-Libraries" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Extra Cost Tables Map" xil_pn:value="0" xil_pn:valueState="default"/>
<property xil_pn:name="Extra Effort (Highest PAR level only)" xil_pn:value="None" xil_pn:valueState="default"/>
<property xil_pn:name="FPGA Start-Up Clock" xil_pn:value="CCLK" xil_pn:valueState="default"/>
<property xil_pn:name="FSM Encoding Algorithm" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="FSM Style" xil_pn:value="LUT" xil_pn:valueState="default"/>
<property xil_pn:name="Filter Files From Compile Order" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Flatten Output Netlist" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Functional Model Target Language ArchWiz" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="Functional Model Target Language Coregen" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="Functional Model Target Language Schematic" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="GTS Cycle During Suspend/Wakeup Sequence spartan6" xil_pn:value="4" xil_pn:valueState="default"/>
<property xil_pn:name="GWE Cycle During Suspend/Wakeup Sequence spartan6" xil_pn:value="5" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Architecture Only (No Entity Declaration)" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Asynchronous Delay Report" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Clock Region Report" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Constraints Interaction Report" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Constraints Interaction Report Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Datasheet Section" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Datasheet Section Post Trace" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Detailed MAP Report" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Multiple Hierarchical Netlist Files" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Post-Place &amp; Route Power Report" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Post-Place &amp; Route Simulation Model" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate RTL Schematic" xil_pn:value="Yes" xil_pn:valueState="default"/>
<property xil_pn:name="Generate SAIF File for Power Optimization/Estimation Par" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Testbench File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Timegroups Section" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generate Timegroups Section Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Generics, Parameters" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Global Optimization Goal" xil_pn:value="AllClockNets" xil_pn:valueState="default"/>
<property xil_pn:name="Global Optimization map spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="Global Set/Reset Port Name" xil_pn:value="GSR_PORT" xil_pn:valueState="default"/>
<property xil_pn:name="Global Tristate Port Name" xil_pn:value="GTS_PORT" xil_pn:valueState="default"/>
<property xil_pn:name="Hierarchy Separator" xil_pn:value="/" xil_pn:valueState="default"/>
<property xil_pn:name="ISim UUT Instance Name" xil_pn:value="UUT" xil_pn:valueState="default"/>
<property xil_pn:name="Ignore User Timing Constraints Map" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Ignore User Timing Constraints Par" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Implementation Top" xil_pn:value="Architecture|spiifc|IMP" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top File" xil_pn:value="../../hdl/vhdl/spiifc.vhd" xil_pn:valueState="non-default"/>
<property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/spiifc" xil_pn:valueState="non-default"/>
<property xil_pn:name="Include 'uselib Directive in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Include SIMPRIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Include UNISIM Models in Verilog File" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Include sdf_annotate task in Verilog File" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Incremental Compilation" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Insert Buffers to Prevent Pulse Swallowing" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Instantiation Template Target Language Xps" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="JTAG Pin TCK" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
<property xil_pn:name="JTAG Pin TDI" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
<property xil_pn:name="JTAG Pin TDO" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
<property xil_pn:name="JTAG Pin TMS" xil_pn:value="Pull Up" xil_pn:valueState="default"/>
<property xil_pn:name="Keep Hierarchy" xil_pn:value="No" xil_pn:valueState="default"/>
<property xil_pn:name="LUT Combining Map" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="LUT Combining Xst" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Language" xil_pn:value="VHDL" xil_pn:valueState="default"/>
<property xil_pn:name="Last Applied Goal" xil_pn:value="Balanced" xil_pn:valueState="default"/>
<property xil_pn:name="Last Applied Strategy" xil_pn:value="Xilinx Default (unlocked)" xil_pn:valueState="default"/>
<property xil_pn:name="Last Unlock Status" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Launch SDK after Export" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Library for Verilog Sources" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Load glbl" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Manual Implementation Compile Order" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Map Slice Logic into Unused Block RAMs" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Mask Pins for Multi-Pin Wake-Up Suspend Mode spartan6" xil_pn:value="0x00" xil_pn:valueState="default"/>
<property xil_pn:name="Max Fanout" xil_pn:value="100000" xil_pn:valueState="default"/>
<property xil_pn:name="Maximum Compression" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Maximum Number of Lines in Report" xil_pn:value="1000" xil_pn:valueState="default"/>
<property xil_pn:name="Maximum Signal Name Length" xil_pn:value="20" xil_pn:valueState="default"/>
<property xil_pn:name="Move First Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Move Last Flip-Flop Stage" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="MultiBoot: Next Configuration Mode spartan6" xil_pn:value="001" xil_pn:valueState="default"/>
<property xil_pn:name="MultiBoot: Starting Address for Golden Configuration spartan6" xil_pn:value="0x00000000" xil_pn:valueState="default"/>
<property xil_pn:name="MultiBoot: Starting Address for Next Configuration spartan6" xil_pn:value="0x00000000" xil_pn:valueState="default"/>
<property xil_pn:name="MultiBoot: Use New Mode for Next Configuration spartan6" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="MultiBoot: User-Defined Register for Failsafe Scheme spartan6" xil_pn:value="0x0000" xil_pn:valueState="default"/>
<property xil_pn:name="Mux Extraction" xil_pn:value="Yes" xil_pn:valueState="default"/>
<property xil_pn:name="Netlist Hierarchy" xil_pn:value="As Optimized" xil_pn:valueState="default"/>
<property xil_pn:name="Netlist Translation Type" xil_pn:value="Timestamp" xil_pn:valueState="default"/>
<property xil_pn:name="Number of Clock Buffers" xil_pn:value="16" xil_pn:valueState="default"/>
<property xil_pn:name="Number of Paths in Error/Verbose Report" xil_pn:value="3" xil_pn:valueState="default"/>
<property xil_pn:name="Number of Paths in Error/Verbose Report Post Trace" xil_pn:value="3" xil_pn:valueState="default"/>
<property xil_pn:name="Optimization Effort" xil_pn:value="Normal" xil_pn:valueState="default"/>
<property xil_pn:name="Optimization Effort spartan6" xil_pn:value="Normal" xil_pn:valueState="default"/>
<property xil_pn:name="Optimization Goal" xil_pn:value="Speed" xil_pn:valueState="default"/>
<property xil_pn:name="Optimize Instantiated Primitives" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Other Bitgen Command Line Options spartan6" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options Fit" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options Map" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options Par" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compiler Options Translate" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Compxlib Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Map Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other NETGEN Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Ngdbuild Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Place &amp; Route Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Simulator Commands Behavioral" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Simulator Commands Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Simulator Commands Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other Simulator Commands Post-Translate" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other XPWR Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Other XST Command Line Options" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Output Extended Identifiers" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Output File Name" xil_pn:value="spiifc" xil_pn:valueState="default"/>
<property xil_pn:name="Overwrite Compiled Libraries" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Pack I/O Registers into IOBs" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Pack I/O Registers/Latches into IOBs" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="Package" xil_pn:value="csg324" xil_pn:valueState="non-default"/>
<property xil_pn:name="Perform Advanced Analysis" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Perform Advanced Analysis Post Trace" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Perform Timing-Driven Packing and Placement" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Place &amp; Route Effort Level (Overall)" xil_pn:value="High" xil_pn:valueState="default"/>
<property xil_pn:name="Place And Route Mode" xil_pn:value="Normal Place and Route" xil_pn:valueState="default"/>
<property xil_pn:name="Place MultiBoot Settings into Bitstream spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Placer Effort Level Map" xil_pn:value="High" xil_pn:valueState="default"/>
<property xil_pn:name="Placer Extra Effort Map" xil_pn:value="None" xil_pn:valueState="default"/>
<property xil_pn:name="Port to be used" xil_pn:value="Auto - default" xil_pn:valueState="default"/>
<property xil_pn:name="Post Map Simulation Model Name" xil_pn:value="spiifc_map.v" xil_pn:valueState="default"/>
<property xil_pn:name="Post Place &amp; Route Simulation Model Name" xil_pn:value="spiifc_timesim.v" xil_pn:valueState="default"/>
<property xil_pn:name="Post Synthesis Simulation Model Name" xil_pn:value="spiifc_synthesis.v" xil_pn:valueState="default"/>
<property xil_pn:name="Post Translate Simulation Model Name" xil_pn:value="spiifc_translate.v" xil_pn:valueState="default"/>
<property xil_pn:name="Power Reduction Map spartan6" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="Power Reduction Par" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Power Reduction Xst" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Preferred Language" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="Produce Verbose Report" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Project Description" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Property Specification in Project File" xil_pn:value="Store all values" xil_pn:valueState="default"/>
<property xil_pn:name="RAM Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="RAM Style" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="ROM Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="ROM Style" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Read Cores" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Reduce Control Sets" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Regenerate Core" xil_pn:value="Under Current Project Setting" xil_pn:valueState="default"/>
<property xil_pn:name="Register Balancing" xil_pn:value="No" xil_pn:valueState="default"/>
<property xil_pn:name="Register Duplication Map" xil_pn:value="Off" xil_pn:valueState="default"/>
<property xil_pn:name="Register Duplication Xst" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Register Ordering spartan6" xil_pn:value="4" xil_pn:valueState="default"/>
<property xil_pn:name="Release Write Enable (Output Events)" xil_pn:value="Default (6)" xil_pn:valueState="default"/>
<property xil_pn:name="Rename Design Instance in Testbench File to" xil_pn:value="UUT" xil_pn:valueState="default"/>
<property xil_pn:name="Rename Top Level Architecture To" xil_pn:value="Structure" xil_pn:valueState="default"/>
<property xil_pn:name="Rename Top Level Entity to" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Rename Top Level Module To" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Report Fastest Path(s) in Each Constraint" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Report Fastest Path(s) in Each Constraint Post Trace" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Report Paths by Endpoint" xil_pn:value="3" xil_pn:valueState="default"/>
<property xil_pn:name="Report Paths by Endpoint Post Trace" xil_pn:value="3" xil_pn:valueState="default"/>
<property xil_pn:name="Report Type" xil_pn:value="Verbose Report" xil_pn:valueState="default"/>
<property xil_pn:name="Report Type Post Trace" xil_pn:value="Verbose Report" xil_pn:valueState="default"/>
<property xil_pn:name="Report Unconstrained Paths" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Report Unconstrained Paths Post Trace" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Reset On Configuration Pulse Width" xil_pn:value="100" xil_pn:valueState="default"/>
<property xil_pn:name="Resource Sharing" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Retain Hierarchy" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Retry Configuration if CRC Error Occurs spartan6" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Run Design Rules Checker (DRC)" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Run for Specified Time" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Run for Specified Time Map" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Run for Specified Time Par" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Run for Specified Time Translate" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Safe Implementation" xil_pn:value="No" xil_pn:valueState="default"/>
<property xil_pn:name="Security" xil_pn:value="Enable Readback and Reconfiguration" xil_pn:valueState="default"/>
<property xil_pn:name="Selected Module Instance Name" xil_pn:value="/spiifc_writereg_tb" xil_pn:valueState="non-default"/>
<property xil_pn:name="Selected Simulation Root Source Node Behavioral" xil_pn:value="work.spiifc_writereg_tb" xil_pn:valueState="non-default"/>
<property xil_pn:name="Selected Simulation Root Source Node Post-Map" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Selected Simulation Root Source Node Post-Route" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Selected Simulation Root Source Node Post-Translate" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Selected Simulation Source Node" xil_pn:value="UUT" xil_pn:valueState="default"/>
<property xil_pn:name="Set SPI Configuration Bus Width spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
<property xil_pn:name="Setup External Master Clock Division spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
<property xil_pn:name="Shift Register Extraction" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Shift Register Minimum Size spartan6" xil_pn:value="2" xil_pn:valueState="default"/>
<property xil_pn:name="Show All Models" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Model Target" xil_pn:value="Verilog" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Run Time ISim" xil_pn:value="1s" xil_pn:valueState="non-default"/>
<property xil_pn:name="Simulation Run Time Map" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Run Time Par" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
<property xil_pn:name="Simulation Run Time Translate" xil_pn:value="1000 ns" xil_pn:valueState="default"/>
<property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)" xil_pn:valueState="default"/>
<property xil_pn:name="Slice Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/>
<property xil_pn:name="Specify 'define Macro Name and Value" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Specify Top Level Instance Names Behavioral" xil_pn:value="work.spiifc_writereg_tb" xil_pn:valueState="default"/>
<property xil_pn:name="Specify Top Level Instance Names Post-Map" xil_pn:value="Default" xil_pn:valueState="default"/>
<property xil_pn:name="Specify Top Level Instance Names Post-Route" xil_pn:value="Default" xil_pn:valueState="default"/>
<property xil_pn:name="Specify Top Level Instance Names Post-Translate" xil_pn:value="Default" xil_pn:valueState="default"/>
<property xil_pn:name="Speed Grade" xil_pn:value="-2" xil_pn:valueState="non-default"/>
<property xil_pn:name="Starting Placer Cost Table (1-100) Map spartan6" xil_pn:value="1" xil_pn:valueState="default"/>
<property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)" xil_pn:valueState="default"/>
<property xil_pn:name="Target Simulator" xil_pn:value="Please Specify" xil_pn:valueState="default"/>
<property xil_pn:name="Timing Mode Map" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/>
<property xil_pn:name="Timing Mode Par" xil_pn:value="Performance Evaluation" xil_pn:valueState="default"/>
<property xil_pn:name="Top-Level Module Name in Output Netlist" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL" xil_pn:valueState="default"/>
<property xil_pn:name="Trim Unconnected Signals" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Tristate On Configuration Pulse Width" xil_pn:value="0" xil_pn:valueState="default"/>
<property xil_pn:name="Unused IOB Pins" xil_pn:value="Pull Down" xil_pn:valueState="default"/>
<property xil_pn:name="Use 64-bit PlanAhead on 64-bit Systems" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Use Clock Enable" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Project File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Project File Post-Map" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Project File Post-Route" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Project File Post-Translate" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Simulation Command File Behavioral" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Simulation Command File Map" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Simulation Command File Par" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Simulation Command File Translate" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Waveform Configuration File Behav" xil_pn:value="true" xil_pn:valueState="non-default"/>
<property xil_pn:name="Use Custom Waveform Configuration File Map" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Waveform Configuration File Par" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Custom Waveform Configuration File Translate" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use DSP Block spartan6" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Use LOC Constraints" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Use RLOC Constraints" xil_pn:value="Yes" xil_pn:valueState="default"/>
<property xil_pn:name="Use Smart Guide" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Use Synchronous Reset" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Use Synchronous Set" xil_pn:value="Auto" xil_pn:valueState="default"/>
<property xil_pn:name="Use Synthesis Constraints File" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="User Browsed Strategy Files" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="UserID Code (8 Digit Hexadecimal)" xil_pn:value="0xFFFFFFFF" xil_pn:valueState="default"/>
<property xil_pn:name="VCCAUX Voltage Level spartan6" xil_pn:value="2.5V" xil_pn:valueState="default"/>
<property xil_pn:name="VHDL Source Analysis Standard" xil_pn:value="VHDL-93" xil_pn:valueState="default"/>
<property xil_pn:name="Value Range Check" xil_pn:value="false" xil_pn:valueState="default"/>
<property xil_pn:name="Verilog 2001 Xst" xil_pn:value="true" xil_pn:valueState="default"/>
<property xil_pn:name="Verilog Macros" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="Wait for DCM and PLL Lock (Output Events) spartan6" xil_pn:value="Default (NoWait)" xil_pn:valueState="default"/>
<property xil_pn:name="Wakeup Clock spartan6" xil_pn:value="Startup Clock" xil_pn:valueState="default"/>
<property xil_pn:name="Watchdog Timer Value spartan6" xil_pn:value="0xFFFF" xil_pn:valueState="default"/>
<property xil_pn:name="Working Directory" xil_pn:value="." xil_pn:valueState="non-default"/>
<property xil_pn:name="Write Timing Constraints" xil_pn:value="false" xil_pn:valueState="default"/>
<!-- -->
<!-- The following properties are for internal use only. These should not be modified.-->
<!-- -->
<property xil_pn:name="PROP_BehavioralSimTop" xil_pn:value="Module|spiifc_writereg_tb" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_DesignName" xil_pn:value="spiifc" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan6" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_FPGAConfiguration" xil_pn:value="FPGAConfiguration" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostFitSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostMapSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostParSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostSynthSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PostXlateSimTop" xil_pn:value="" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_PreSynthesis" xil_pn:value="PreSynthesis" xil_pn:valueState="default"/>
<property xil_pn:name="PROP_intProjectCreationTimestamp" xil_pn:value="2012-02-28T11:11:25" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="8CCD92A1D6E74DAC823A444842F84F30" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirLocWRTProjDir" xil_pn:value="Same" xil_pn:valueState="non-default"/>
<property xil_pn:name="PROP_intWorkingDirUsed" xil_pn:value="No" xil_pn:valueState="non-default"/>
</properties>
<bindings>
<binding xil_pn:location="/spiwrap" xil_pn:name="../../../../../ucf/atlys/spiwrap.ucf"/>
<binding xil_pn:location="/spiloop" xil_pn:name="../../../../../ucf/atlys/spiloop.ucf"/>
</bindings>
<libraries>
<library xil_pn:name="interrupt_control_v2_01_a"/>
<library xil_pn:name="plbv46_slave_burst_v1_01_a"/>
<library xil_pn:name="proc_common_v3_00_a"/>
<library xil_pn:name="spiifc_v1_00_a"/>
</libraries>
<autoManagedFiles>
<!-- The following files are identified by `include statements in verilog -->
<!-- source files and are automatically managed by Project Navigator. -->
<!-- -->
<!-- Do not hand-edit this section, as it will be overwritten when the -->
<!-- project is analyzed based on files automatically identified as -->
<!-- include files. -->
</autoManagedFiles>
</project>
INTSTYLE=ise
INFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\spiifc.ncd
OUTFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\spiifc.bit
FAMILY=Spartan6
PART=xc6slx45-2csg324
WORKINGDIR=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav
LICENSE=ISE
USER_INFO=179841373_174164856_206270303_042
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6
###5028:XlxV32DM 3ff1 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###4884:XlxV32DM 3fff 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###4492:XlxV32DM 3fff 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###4748:XlxV32DM 3fff 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###5032:XlxV32DM 3fff 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###6044:XlxV32DM 3fff 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###2916:XlxV32DM 3fff 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###2492:XlxV32DM 3fff 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###2524:XlxV32DM 3fff 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###2740:XlxV32DM 3fff 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###2792:XlxV32DM 3fff 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###2744:XlxV32DM 3fff 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###2864:XlxV32DM 3fff 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###2696:XlxV32DM 3fff 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###2624:XlxV32DM 3fff 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###2708:XlxV32DM 305a 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
\ No newline at end of file
INTSTYLE=ise
INFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\spiloop.ncd
OUTFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\spiloop.bit
FAMILY=Spartan6
PART=xc6slx45-2csg324
WORKINGDIR=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav
LICENSE=ISE
USER_INFO=179841373_174164856_206270303_042
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6
###5304:XlxV32DM 3ff8 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###2784:XlxV32DM 3ff7 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###4360:XlxV32DM 3fff 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###4372:XlxV32DM 3fff 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###4784:XlxV32DM 3fff 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###4904:XlxV32DM 3fff 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###4996:XlxV32DM 3fff 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###5336:XlxV32DM 3fff 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###5768:XlxV32DM 3fff 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###2584:XlxV32DM 3fff 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###2580:XlxV32DM 3fff 9fceNrNW1mSJCcMvRIIkUv7HD5Ady2f8+evirm7xb6TUGuHI9xZydMCSA8BOYzhRa4CUQrG3DPo551+obzKTXAh5S5QABtDC43GQTTX6GUIvWvsNoRdCRu362e5llgECcjxrKWEk7LIru8aW4wKXprYxbcfYZeo/RiLE9htGLuavg1ix/u2TfRtm+jbNtG3faJv+0TfuGATvVNonEJvE2g+0UeFnuklTPUSKr08CU5oUUVLj5AacZEQoa+4U9aWUotHzkitmdSJkCvhhMZelbzgxAfodVylpF9SQqHHIRIdTgMiYUk6tJI8IZSuQf1dDSTXa3UsZ98Iox00twsVKaadvKVIIPRqPEBENQY80hD3T/uq/HNjmzCr/qv04EKSgp4ymz1kbkVebURPyBiJobHtjl5dA151bwXJSLnZFQT0yiPylkpcodgJo9qECDYKz8J7Yy/9TWgzIoT8+/cPF/v+xb7E7Q/lwxeH8z//0XB/wT//kj36LW+0BHzTkDlTysndLH3a8UV5HtrpL1B/l9RQrT2EPw2NmRbbbRdK9JZ0aFv0n7a1K10RelSrGtgf448eEkBJg7tZDRna21tTbFMjdlBVjMon3TOwI8mjkcwwdvoPNLmQT3HGSx2aqnTanJXwXuHxJCFFk279PKgjRu9q5t2bkBJKwoTbN4UbmnCTabTB5ecmFPl9R7QbpQf1lEiAdPEq7WK2OMSJ1ULX3i8PpejiUxTiuPf5kmbLVS8Vye9K3uypfI961FMsl1qqjI4iSKno3YyrHWOI0RGRq6efgpRzEpVeZ6rn2fQuJ8n98WUNusuajBe1xtx1lmQzdzOzm2huFRNc9/vYblnyBN1lpLeKH25npamLIswUT9DRm8uhjUz0UWpKNahgtwIrdKHJK1iz3I+jlwk0eM6qo+sjBJW+9mzo3hLyCC09g8kYrZ9LNK+h7TM0mCRn6AhtmP8nYv5Lyvz7t2J+1mb+wFBV1t3aHmXc1vIfBufWoWECzQdj0qFxCs0m0FN97OZcHr3WmzS/vYzoyLBIprOhQmgU5V7LI9upAe2f20yJg83U+qbN1Dq9mVofqCK0tM3fMkIXLcfzDI/QxzN6MGcv2cJtvj5EbyP3K64HRf673MCdwgbumlXUDG7qgJV4NbbE9cFoasntoBL9tfbOyOZ687GLd2kmhqKRp/8jcsJyO1pKA8EIQ6uRrVGOLd+nt5DKaqM77GYaVJaArtx8Rj1ocVZjwr92RvKcW4csj2oq+bhsi4/2nf4avnFcaI74x44WNXabwNYPRKGJRo8YQS8ZumSLcicay/aZRq306nyAy83xxDniiWt6znPGmz7S/c4YaXkJT+R638cTwfJ7eaJj90U8ESy+myeC5dfwRNA/zhNGZownDLbgCVvJ1rB7dCXAGhWsjDL2lMlG75uypzSXL5TLJ3toy36SZJaX5abuJLPNFLqCyZNOawO+VUstsxk0dyym1DI3MrXCDPRBrQjoarfyoRRuQ0seyq6Hoik5flAhin6C1rJGd0nurhaKowbQW2Twd8ttb4U/LI0LxiDdp3Ejrdp4EkLnoudHelzhaXpyrx6pk0i1oZ7Xup79bj2nKFphIDkMRidHU4/IW5pRf9L+tFI1LfBbyYren+UBf8xW7mSeG/7AEHkw7w881K/d+yOqebPkd7CWH6CKlkP3uw7NB4kbdHG0TqHFBHq33HSEZeryKDo8Y16uLAYXi431ygZWRY8c1Mss9ljvZg95j7ViBRnrPFWWa1YcIZvFuikbyYwUEKxTQLT0DpdEEz7U7PT0zvgwpLtfwB54U7NwKi6RHijMvT6o2GheHNfax1ZtexAEd9cYmEmGFakvaTDHNlsejtZpWIxE3UO3CYWRqq65otW+fYPoUiG2KBuVYcu/3kztd8wURJUZHEZEq+qD6uq13HGlLIqIGB17DNfmVyr4YTEVP6Sbd3b+Nrt3VfKHU9bN3cET1ZBllYm4EX1J/UaRGCbTqJwMMu5OXwQyd1JNXGif90LYwH+mF6Fd/dXEo0uYTFOSeK+2f27YNyc7pgC6275UCwn7tBcPzQL7BaPgtme/wYtPZgT8AvufnwXxRi/67PQCL8yXZNSyxFytSn1tkfut4Y9GWE36y7OzKfSyXlWxEsK3bffYknZjqAsQKgLNO7KuvoHD9CuzIStDmqgsf5a9IU1R3+tYsIW/+eKvMr/Zisrt1rIeMU7PBetRc9YFvfYklnzQg7bWvpf35s3SHYP35O7ykdw1Re17crdj64m5az+af1vuug+9P5W7MJAXr87e3IfX5G979V1/RQ2wPr0San1VfW19PV1+bx3ncT2W/TwB6cXIlvCHwUm+phqj9uasP2S1HUtdz1yOHeYvCnwbA3ZsPZEBjZX3MaCx9zkG7OXcuxgw9+HdFcz2dO7pHeapfhSZ2Pznr30p3vpHs/asZc5WX4pXj1EhxrovDw9kZvTjANacqZgj3TGsuTps+127bjLHicd+h4vnUew+jJ3xYWw8HHZuHvnEPPb8ZhN+szv8rl1lzPYVOnPEmkfqx+MiauPyP0V/2Zw=###2348:XlxV32DM 3fff 914eNq9W12S4ygMvhKSILYz59gDdDvO47zNU2ruvtjYGBsBAnq3pqonP5IA/esz0aRn/U2glJ70YrR5m5GQyExE26eDdhRkX6dpkUaWVrFyVQUtiGh1Ri6wtLKzPSztJKbEClrpbodqWgxpzVujQf1d4NEiLY8F2vWVMaOeI/rgm5PejPbf/j6geUU7C765cJd4keVdNfAq8qoq3jmybHzilXcu8DoPauNt4zyjoZW37rSvKLrrrUsZC0l4XbZqXReavIoavOq656nJIzHjVekYDLmvcSS3MGRisKRp6PAO6PAOx0tNVoKOnAMdngUdngUNnnXlHZu8UjVnDqDJ8gI9GuzreGv1fM12uiNTUgevLAbXWg/2FKQno7Wx8bvKoEDGQeEl2FdbjV9lue80rvq1lINdDQ9KjU3ylVg+JOUjmf90/zn5Vfv/+/c30Jd6qic+Pr9tWX6CMr/+WPlP/PWPNeXze1Yfmmigr0QPPeu37a4mK3P93nZvm6fHn+rNm6QyHHX8Od5k+GphBmNPaTXk+uSHPfcS9Y4Y9LwnRbzKyPC56F/0vK3C74422SHnmScXMxAmOZ3W+GliWe3uOPdTYtTp+h0eerCf7++3Hceag5NjPxOyOwOB1d7GWH/DpDcUz8XwGTLNnKqRM7Yfb3knBVmPlq2D7DqOc9k4FX821opYEYeU9oOr53C+sFWTrH97v6Ptfbyer6Q7RVpHQ5IzjHWOUyW1dEShEvlqvXZT+i2vDZnV85xDMsuFfM6vUpnj7nnLbr0M9W6DXFaSWsxEZ4i8MniNbF6PdtUT3/s6JNmV0CLRKuVcXqg20MyJQo+ZWS3IqyFW1Y6Uh1Kw3tIdB5LIK+wzERu1lTGaCa5StrkAzL3352TLMAO2z9lWwaSUePZIRdXLVxd+Jr/PTonqcsz3d4Qngw0kNOslkXj2TeTzTQ6vaRDqKK9pqRQ4vCJjLyU4k/Fn0h1yBn8m6PDBw1YpS0nloNcNdfiy6zpfSXvL5ahjOk9GuSy2cJcD90n+VvnyEWF8PFyzTn2MnhgcZnZUloTBjqgj1sdgP9ghRwX7gQ5Nu2w4F7KhRM6BlUBXVpXtRyIH/X50R0YtxbtUTj77SKWQzxq6Iy+jP5Pe8kdzft8r4L3+5ZHT1qql/rf9SGylGqtfHqFNzRpzVP1q5Wg3AW666dkP+f0gm3fkcpSPT2yejyDT6y/hfF+BDrhZPzcvpSYtHlfgpyYp0gbCCZBHL6SrjNLziPTIo5xsDWMmkimwe26KLk09vN7D2xQ1mGoJQU5huGd3eudbkvKQxRKdZjjqSAql9j+JIiPmlqJgW5ZxKD1cUPrHBaX/er1XlF7dUPozsx7eyttGiz3BiPwu8PY9pkAY9zEaJfN0bDypdL0UphhiQZg4IzZyQg7nyu5W57JcVj8kitPTF5ZsLgkzDwRZtX13uqtCkq+Qpqvyj77y665OZPSdiOnoi7Tvi0xXrwe+S+uTM/ieUXf1sOh7WOjoqSXakXTm6LXz6JJjvHawa+KQdPj4I9rBH9IONmunflbVPtIfHTO49jM4shlDii3oAFvokTMFWAd14aMSpFWUCwUnk8gZgpP1oC8pFKcedxs8pg1dOODg8UTdgW4qH6c9WOvko5S6ENs8KiDHoXnUpL6ujz5KsQvr134/fUgZv596BPA60bdjtiaI9r4nPcqj0T1yHHbyKuxH0mso79G6+CwNi8/STLL33eeYqqm90DnvT1dV8anlT8xsqc47nGJnj9CknvyS9PlyxRNVEzz5heKTXyjMHFeUS3rbgNd5SmfSqRqk6yROryL0LDUV8XdsjjNox+mRMxCfXnfsSmcxj7x9xsw9ktyTfMrd3DvPtksRoggeL8NGlEOL5v8j5qBxFWjeH2Rulf0EmpKPIxTEETZztp4M0xisAMGdZFk244XSlfiqQ9EtWMn9Oj5/5nHY8jo6UwvKVXUqRqjsLpC0NlAzsgiJ+6rCe1wO48WnepKDePF9QXhH+FhVfmXglG3IKF0WyhQzntYUL6mZ7KMdYn9oh20PtZyS6FTScEXB3x96RDoKf0TRoqOQn6U1lLgOHBS84DqwSVAHGg2ot9BadZGkDim4RDb1XNLwlwe2wdPpX5/6h6/rjwWIM0D4K6XDANv/9q+lyv6qKUnHmIKvEsSaDQOz8Wg0BmZz3RPlseudIt+ltQfCBbt2hjCnIeh1zRYkyRalcQjSjy4StMfF+NzFVFMoaX2A1O3ajFPUI1CUaUirVFTUWKGoMUirVEyrudvx7Uq63DlwShpOJV1LzzR+rGuX0ioWdWTEadUhFmv03SeQfwEVQ72t###2688:XlxV32DM 3fff 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###2828:XlxV32DM 3fff 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###2608:XlxV32DM 3fff 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###2740:XlxV32DM 3fff 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###2768:XlxV32DM 3fff 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###2664:XlxV32DM 3fff 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###2684:XlxV32DM 3fff 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###2888:XlxV32DM 3fff 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###2504:XlxV32DM 3fff 9b0eNq9W0ua4ygMvpKRILarzzEHSBxn2bte5eu7Dw8/BEY8PdObrkoJBJJ+oV8QfP4MP/j9Dfj4eX5+/QFUP/DrH0D5M8kvSnxKlItUapKL+qgJASc1IyIMg/lECvlW+q/6NyKnf/rIUc76s4/+q0SBqCVmuSp5nSUmq0YFKCRcxo37uE1CWYlzDiP7MeNwJGt6h6PpX9jRb/uzGIa/f38LiS9tKulM9Rk8Uy3TFx/aVNGFRjZoJlfbBoE1jNo2CMwGIblBu3gl2K3StdSs+7oSiaLD1G60M7XywyiwRzzAfHvYkES5u2zRLns7l72E5zK5Dl89Rp1e09YCG85GL6K0es2KlPEB6wdl108t6EaaT1cycpUryoi/Tz1OwkkbnZKNDnVIpKS1RVhp8KW9ves92XHysoPFRmx8v7jt4JRu1MLggtGSlI75YF9TGK9oRww6sUx6pZjBzSPQd4yOSkZskVrldU9Ry6nDJy4GY9iSJXMk84zCqXsdzjJ96xDsHBSrHD5rbFOD/enWNWHRHtNr8uxEogwKPF2G7PKRslBnmPPP0emcv9nR4FUqdh68aR6onmf3oJZQNvt6vgQiEczm/Kg/tTa1BZGVs58/9KjRVAd6Nv2/dB7v0YUVukSnLo2ZYl3Qqcu4oVQXsrr2HPV/+KtM1z3+KtN1j7/KdFX6y9V4b13jKVfjPSavxhMLfg2dYGq8fU1GE245FUk1FVKP+cgmezW1j7xK61N9P9s3CbXlUVcJYLRSA1IJIKnUsCtHzltOcrVIX9yJwz8D5x/9mf5n/oYpVJVmphaNF2/bn14XvYrYOnYai8xcxGp6d0uSjvInZFgxAjOH8yQfB9bHSmSoOMQtxONh29kVD5kdbHPAidSVIPXlI/X9MEiVAYdOaTDRgEyTQJ77OJsEdD0VXj0jZE1qY1eZ4XLSZ2fHKoHLPseaUswPL7kKSM8Bs3GEBXE0VNohVoPP+Vg8KsgqlBKkI+mlpOa4K0+JojwFN+bico2tp4g8ThHLQRyePwTPnwDPL4NnFeD5GvGC5BcRxQeS3Cps22+0+AilH4e0k9ilSyI+t/e9qncdqh6vTZU+643LFn2lWIozuqngdEm3bqfivFLWkYxnOMhmuLA3GmbVLcaYTu5eAdKMLUhNJwLpwcMGHNhQ0WiPIomZO2/B/RTZW91yOJE9QoDste6kFtsqLzUE2w1UZyXl1R6t+HUec51h1Z1150pE9XPzFo1ZDGeq1bmoRiyeg42RU1oxn2NFLKfmTmcDUZANZLbGGuKRztRvtDYcsvgeSDYYKm1CtDh8C4Jv5eP7swYnN1uX7efAQHA6NDAmM35Mcgw8JJSebWX50YPtX8ZZEMf0pxjTZ6R37h7rC8SYPsa5RVS6YAfb2TMU1NHEX5UowXvZZQX+FXsLgl53OsXjVXcf0UpX5OC5u+dWr6+99/04+kM7U5dA8kPQU3s9g55aNk7zHDjkqSvDagdy35S8/UzenZxMe0nes+GZV49cBSVdB84GWS6C3ewbb2ffaeY859FJezDMDD3YrKuOpk5k1mtrxWWMcUskuAw6aIuqw+X1FUr7Su/jx1iZ+cbu6rpeX+40qqluoQKBkJ+jyOd1fBnb+HKWeYiEpZgqm9hBRXtGsVpMZN9aYYRFy+Q7l0IWLQlaVx+t5vURx6KxpI7P7IPnFjEb8bzFZzlLdS+doLCil45FfYR0vNYzurz2fLxCYx4oqZrTnB2K0JfupUN3PjXv/mryae+NZIu+1nMu6CM5jKsT45MIMD4WM2laXaaq0gyTBsKkBfcKaGfSTAZWTP8VGlk0VLHoUHpNsmi83JcvideA/A7y2YjihmrhXwrdyZdJfMRefFWcuvwMXW+VqjDYWyPWa2t/zzUd3PhA/IMgXvqIf9pbbIie6tDIjSH/epdwYwjeBya5ceJVhCx6X8vvib54TWOknevC/TfNna89sfA17V3v50riX974/qtUXyveopx3JHgbg7soyVfRUFKnZ/AmSC+Kv69bszdw++kmC28O8ZQ+o8l7GdJu4fu4On3xWBIZeOOL2FJ92d5U+Vvq7PuU+vfYd/Bz6OXn8ZrSY9v1p8Clu+SwPJ1YfkE5I4ZGRgxVjPgiva1ecDc4h40EOfFEhY1kXEuxbwTxTT5C2hkx3MCI4T9gxCuxQ8s3POiZn5rjrjfoJVnrzjfUpfpaT5MoI57Pb5SO/qswEAbiT17dpmgLsfB3c/W7KyFfWx2xQgnWKHmd2eqz+NlqmL84BbnKvPdxr5dKX/Sid3P3vsyT/uakuzt5W+uLjnnwmMfvq9XO42rb986Wqmzz0BFpZ0nqf1849TvHqYMZqJ6S3kfpSOsLFzXLGZpq9qLm8fzaC5owNOH88qBxZjZJh8cwsF8+FCwNiTXCznkarozfZNuyYduQ3baq2LZisvnUsW15dAPw+IaxXM8vhQsIrsqFuiYJZIHALfpa3MTm8KW9zxMz/AumoX1F###1572:XlxV32DM 3fff 60ceNq9W8tW4zAM/SXbkvIo3zEfwBS6ZDcrDv8+Tng0LXGsx4XFMDSVrmVJluzrkPjMFx55Zqr/nqlQSun2mVy4ENNYny+fWC4yVTmSuf6cbqQvIsKUSXYxMpEC41b6+3OiUp9T/UZk4qdvSJtvmtrLd5k4gPPuj+U7Wu1s4ywypYm38djb20tmvpzSiV5fCg2np/HhXyE5lYc/dcDTdH6twz7uDkWUU5JpGUpyZzDZCcKqvyupDeM9Qi+MeU205lw67l+13+e7hLG6TobquPzuuHn+dFx9Pp5yfb5+Tsvny0bufJUb0q3cUDZyl40c3cnJVe6xbOSGrdwaQB7mpyWEVXQTxvPH1NPViR8Zs/5fHVClNg5pyO/J7eTZcBe61Az+KivEQmVZN3d65UBvWvXOlKte2dVLXxKySMj4IZ2v0jWRC+evxJBVb1mxIw/1+XMj3WRr6RVj/e3vDVbZYLVqHoXtGSBzsmAg5pL6Cz/o29y1h7yx3mDID2Csv32sUK2e1wfvGM+8rJ6qWyXuUWMWcNCCbIyh1ncEGxWRfbEV5Y0eA3xgGruzjrvxa+pjrDB5QjEXSy2o0YD1n0+sSP/R29PuP5Y5WTAQc/H2H71vc9ceAuSL/ABGr4bu6Xl94Os/egs4aEE2xlDrO4KNisi+2IryRo8BPvBW/r11bOk/t/oYK7z9pzWXTi2ompnmr1OWany1Tro7leXPU5lZxzNOgevkXR1yjEOmcUjhN4+OZm9oZcyiZ1ABnEEZuFcTA9a2buxhjeHTgOzP7Q6jteb3YsauHJCGv1iVA3r7Ste+/t5nUiC0+t6ex2YXXmvVzFDrBGxd6easzb6ssu84nhkbTwC3IwqM49rAYQRRRSpaXfoYNo+mxhrzrdlWFWGAbwYqYSaRTB2gddHh6wCt/C9QtH796c+wQDAm6LyyyiZc1SFjlR4ALLcoMGJVjH5lj1QArCs588dfgWx4mUq85zg7KSYLW35P8Sz0sdZ1AXj3Fu3dq3FNrTZY+OrwTt91qyYmrLC/XKcthp5tZyhaf1fNgA7H4A7H0A5nPVfG76YJzHf06x0f3JXszXEKz7EA7t8JYkeCxj+rfN2bVxxjBLzdIKHaaapQYdQGpxfGbXhSjWusYq4OQj8y8+y6FTdVNEB0hh/p740K55p7Ab4lRFC7NDdeCFbdcrMugJt1Bt5AiQHLe2LU33G2ea8tBoJVP84BO6vew7Oy6vo3CiYFAoJVP8az7td91gnYutLNWRSrro9nxsYT8MaKKDB8Z0A9gqgiFa0uEVZdj0HONWvntPQ2DVTC70eRqQNYWfXjDmBl1X1o/foTYdUtGBN0XlllE67qoFh1y7t7osCIVTH6lT1SAbxLRs788VcgFKtu6DnOTorJQivzZchC37t4h6y6r+8U65pSserbEweSVde/KywmLCSrrj9tMfRsO0PR+rtqBnQ4Bnc4hnY4FKuu5wUIzHf06x2KVdfPsQD+qoAgdiRo/LPK115WXY8xAv5mQ0K108uq+1D7rLoPt8+qH+P6WfVOB/kPm7q7CA==###1372:XlxV32DM 3fff 544eNq9mm12qzAMRLeELAnDdl4/9r+EGvLa0DZEEjOnf9o0IF8kG42hY2qrvfm7NdVp2j/b9pc3E3v9/+mfv/uiqubr+NnGeS/2bn2cfY+WPf7R91Nh3G7zOP62x/weS0tj5a+x6QyN6yfjmi603GvzE9WReV2HORmRouseKYdIOYlcL0aq9jByOpkRvxjpat8ix2raI8fZ3u1FxTyZ5zFylFmbna2fn3keIot55iPP8pTLedbn81FkLc/r89kokXIS+fhq9TJTLzD110rIzopeXn1aWn06jrgvW0/6EX04chq9HbM9p6vj3K5/O6bQOLcKvt6058E49zmM8vKvvBo0zvP63Ncx43oa6Xrkz8aJ5j07Tm7e43FuHXU7Jk/GmUj1mUj1Yd0XE1ifo7Yj9cmP87w++XGe1yc/zs/6fO70xhlu287j117vvhf8Ntptnze+3Xv6vnPZz9v31POI6uMq2la/cYbs1URYY3+aZjmcl6ZZM8iyQl4dzmtOsxZ4vvJrYwVZUmDdnj2hzAosgTNbC7QGr49eoCm8QlqBhvaPSh0dnjX/orWQhnaQXmB1eM7mAm2B61ihrUQ1i2gN7yKHvh/ThKhoMa0RNS2mKVHVYpoRdS2mOVxJKdBmmrLFrE5Utpi2wGuksiJXoo5GNIU7yVpgoX3EYhXdfhveH9tBQyMWmpUX8mpw/8izip3R1Y8aJqejt3GmmRBnSM9ZI5M+YkY+F7KRdDaN2Gnl2X3kkzHUfyrQhKiQGtKYlYxpCutIy1WSMGt26OsRS4j7w4jViLvDiKVwr83X0GhqFZEczsrTrJl4N0esTtsRRqSFuB+MWCtxNxjex4SdzFqg4XuZCg3uHAUW3umtQMOf8wq9Hu4f86GSGtJmoo7FtE5Uspi2ELUspq3EJ4eIhu8/vDBvjfisF7MaUT9jmtJULWahfUQKLCdqaEybiW85Ylon6lpMW2jvVGLWCvfHPA1/W7QUWPhzpyXeTcng2TjGeD5rJZ4Q3+VIyBNC/6/xhKg3U/Akz8jOCzRY3VJr85PG1LeYxvzPaku8mTuv5faO7698IDkWxweSzYvhA8mxOD6QbF4MH0h2vhg+kByL5QNJZkbxgWQz4/hAsuuD4wPJrhCODyRH4/hAsrPG8YHkaBwfSHbOOD6QbB05PpC6miE+kLqeIT6QuqIhPpC6piE+kLqqIT6Quq4hPpBsJTk+kKqyIT6QurIhPpDsGuH4QOo6ivhAqsqG+ECS65HgA8nWkOEDybE4PpBs/2D4QB6yaD6Q+gxhPpDzbBg+kHqnRXwgdRVBfCB1hUR8IPVKIj6QrI4wfCDZzBg+kPr+8LoPpLI7/AC3ikmi###1864:XlxV32DM 1eda 730eNq1V0lyIzcQ/IwfgMKO5mXCvvgwB0/YH2hsR0XoYF8Y+rsTLWmY7OGY7AAthZrNygKyqlALlGxz1ohSTlux1WojxlvtgnVOu26tTZAZpSDbNJyxyVnrDFAXjTbOJWOMJo1ui+02YCV0bcN6ZwKk6SEuO8llH2Zy0165h7n8JBd2eJgrTHKZh5niJJOY9DBXmo5gfJhLkPCzbOkAm0xn4hE2PevbAS4znSH2ANts7zAH+pRM9w9PkTR32WY7iCXf7rNN9xCqtvtscbrazAG2NF1t9mE2Pd1J3IFz09Od5Ihn+onz8z6bedpUu88120fkAJd74gy9zzZ/DzmSjeGJc+0+22wXOcKVpvvj42xmuofEA1wynSGXHqJ/yibgs8Dm+6OlKfoIn0yf3CM3kk8+eUL/P8YnT5w36r+yxamneOcOsE1Pt4dy85PtmfPtPtv0fHukDiB1WIUw2BHLTfuDQ28cQ3rZuTs3sm50VuxQjHzUj4GOc9GWH9fCBnOtcXu/K275vj7AlyGF/rB1k3h40gb69vaS8qIWOb9gki2xnv5GbBZ9entZ9UWeFMnNIpBv39X47kjPkJ7f6UXS86SXrvUa8fZ20RPVLoBoshQ1Q0uuAFrSOwG20F4qXxAbCIlCQFQXO2UTCGmurGmvPbKRQhQDa8a9ZiJNy5p8SmxvZHsTA5UAzwAFJdKB2fQeeRLsHWlEFhwtbXWn2Q1pssvdEsBR6xSkUBnwZK9igDIqRAbS3hq2m6PXd3ajPEiTss8p2Wk68tATOzoLASsDKwGVATrcIAyw3ZYBOlyfGWg7Mz1lqacScF7vNfkANGvuKtlxa1gpDdy+N7iP5kAa5OrKUVvLfiml6courn2nmcnFlc8s6+uS9Y2Sr1A8faN4FvLId9q7eAZ4BSV4cJSutTBADlXKi8CBrxSTkOn4O1kVCqVY9wxQeDtbValWOnGslh3kNm/JjyIMsOeUJ6vj6PIkWAMBFJI1U7UVnj2Zt6IjXQuvoHTOQkBVDFCsqjBAflTyI2teQX7kQBxuZYCi6+igCnNkMrdocjA3BngFhaRy2LNhoBNAZ16532QaDY17QokM0IpytYJyt5DnLfAKqtKWK09rMqsVxwhlb0/UV3Lm0e8pGbtlhM+kyxXCayhgovla4D0jljLV827aEU/TVwiXb7tCyIJ2ycm3f/6S9zzGrzr/iTKXmhYtaGy4tOq+LsbhuvK7oO5eBY0quzJGsVqw4Rlic/pFcltiA6LzhqgLUvRIwk+Nt2xLv6XiSQU3xlsqiVRkm5U/qARScdXdUhG2JcotFXtRGT9fvvx2FoebYVIx1qoMJL+ey1m/3/QWGGs97k647uIR1OkVN+bT21nr8h7WITZhPLY3Mx5DjJPHo4zHij36ULHbA1cGhzOWMXNljGo8BoPDDHF+qPixlR9b+bGLH3o+fafuoxI0TEMvwGs+/aJx7XCYUGd5L4ZlbIXZOU4WzeAiH3tidGbUvkjze3jkhVstbhl18SkuAXeRAJNS1xi/eVmRHBlYzit6iUHvxV8Y/VEtDaFooS1d96UPbpiJez9yRgVsqyq4VYNMhkwETqFa8QjjK0oVWQw9ja3xz6LbmzbighnvMqyqBTdTWVLE/b6UpXp708/RWerS0O5voVugF41JdAuNi9UrMjd/orqOgrXjF4BNCQGHRI/gIzB1fEJWTl81bovm/BVhMufXWE4vGoevTi9GmXGLuA3Iz4BRxYM9frDDpEWjPMuP3Pl/4UZB/HH+hjxTp2+Y+aNPqPHlVeT9m1tlidtnQsKNz/Xjs45YbW99RGy84dgQt+1t82V7wzGo7SXCrxMI/wXDRIqw
\ No newline at end of file
INTSTYLE=ise
INFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\spiwrap.ncd
OUTFILE=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav\spiwrap.bit
FAMILY=Spartan6
PART=xc6slx45-2csg324
WORKINGDIR=C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\projnav
LICENSE=ISE
USER_INFO=179841373_174164856_206270303_042
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6
###5180:XlxV32DM 3fe6 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###2848:XlxV32DM 3ff2 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###4340:XlxV32DM 3fff 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###4708:XlxV32DM 3fff 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###4696:XlxV32DM 3fff 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###5112:XlxV32DM 3fff 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###4448:XlxV32DM 3fff 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###2276:XlxV32DM 3fff 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###2568:XlxV32DM 3fff 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###2512:XlxV32DM 3fff 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###2560:XlxV32DM 3fff 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###2488:XlxV32DM 3fff 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###2840:XlxV32DM 3fff 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###2568:XlxV32DM 3fff 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###1480:XlxV32DM 3fff 5b0eNq9mt1y4jAMhV/Jto7zQ59jH2AHksve7RXTd1/FAUooQTZS1RmmNHH0xbZ85KQn4IgZPUYQf6Y8IxEohsB/H5HzgFOe80CRxjwSn+Mzp6VVfmhzF2fOOXMM6rnFEhM/Ijxvu3cnlxjMTIiX+0mUSzTi8xlHisj89VmMlfgqxsKeMFESYlyv5eMZ3DZtoty3mLcx1gh8tNzFcs9rOz4eqeOreh5FjsbH+IfPLcdJJIZfIF5n9HghhUJK2zO7M3Us3/PL7HmeM9s4p2ucr6/PaZ4P4dCdP+M0HSI+/sXpdEgff+J0PKSOzhx8oL8vJ5hvn4cw3yZ4ytxdrAMoJdfa9nJdSRL5uvyQUFNJ0DXe94K4Di493B2fJmwppTXuEn5pUVpfrpTv6XEMfg49lfuuXbB4zt7vF38/Po76NsUuLfbuD5s0fC5LsUKW0NbLt0dq2/rZ8STPWUO8KOZAd8vFXPJoL8a7i3ftUZkHtWDyndzkK1XJV1IK5nvE9wUz3QSzK0I3h3CIB5bhc5G4sEpcP57SmXoK/HmuclSUgYpw9uj4+LSK8Q9m3i2n1xhZEeN+Xq8xKpRmN8Ye+9lYaoslLa2lueejma/ioUJU8jK3knMNHDlAvxXA3VZApiXDvgWRph/JvoEWDEdyd1O1/DaYtUxDNSup8z9Us6KhzkqsoB7D7/mKoqbr+0aNvKAey9RUs9Q52URL6tXW1rto+MhUw9POXsX6XpSr5JU+M8cGmrZn9Sxuq17jLbRBnSN9A61Xr++WvnVaWgMra/OxgQXDHYlMU++2GljJcPcj06JhNZVpQb3S6nMkqlWEGtQ4qlUEDfMW1SrS3dVRmdapR7Kv2ANdaVodSQ0s/SvVsYEWzRRSYg1miiWRsqFeSSwYrmiJlQz34RJL/wxaWaf5iTcZ5HzXQLN8Do0iLRqOpExrnDfedKSa+PwhjpXU81Sxx7l7g5Xe6E2o7k00e354+b5qecti8NTXN9D0u5qhmqZ/NooNI6mvI9TA6g3XrkzrDHVJpmVDzZVpUI9kS0aS4a5epiXDPYBM0ytJS5bo3/3VZ4nF81ELTaskfQNL/44lN9A6s8oWRFY2/K+WTINhHZVpZFjZZFoyq2wyy/L/IzItGFY2iTYa1jWJNRhWNYnVG9Y0idUZVjSJlQ3rmcSCYTWTWGRYyyRWMqtk4lo2rGMSKyjdOfZ+Cbj6JeDql4CrXwKufgk4+iXg6JeAo18Cjn4JOPsl4OyXgLNfAq5+CTj7JeDsl4CjXwKufgk4+iXg6peAq18Crn4JOPol4OiXgKtfAo5+Cbj6JeDql4CrXwKufgm4+iXg6peQNAsNrgIYqr9MS4Z6LNFGM4XU+yVQ/R5LYvWGiqV3TNQriMQiwxUt5qGaZeuYgKtjAq6OCbg6JvCrjgk4Oybwq44JODom4OqYgKtjAq6OCTg6JtDsmPgPMLc8aw==###1224:XlxV32DM 3fff 4b0eNq1mltyGzEMBK9EEuBy9zxxfP8jhCpXEtkVeTA7k488SpLVBgkCoNRvOaLHkWOunHPM98y8sseIo7X96MiebzPympkz9vPz3M/Nee2/8+kV7/kj33Ptn92vzZ/7XSPafnT/f2aM1j5e95I2Rdr+fQlairSMk6CFHFsQtCHvGxNbl2NjsqSJtE5kSY9LXkmGdoq0RbCWvI6ToKmV5PrDapA15T0bBC3l7F8ELeRdY1ZSriMEq8uRNYLWjJ0N0S5jX0Os09jVEGsZexpiHcaOhljT2M8QK43dDLHC2MsQa9g6GTzLxj6GWK+rRkRuVnyK+/vO8rJn7kfn/qn9htlF3qz26Nm+zY8a7fEr12nDGFuDNH0lF0FrMu3vSvaXtL55+XhOji5InhrfeOIF5I3Qc7OX7hjPRD0/T5Ko7mKSPH0XJ0W8jGewwjvlnOF4S66f3HoeMo+Lb8rrOSieeua51RzyanLRdWMNrfDU034WKvZjSnp0E70fXQRNjazOctQwhnbKObII2pLPNxObWr06wVIrVxCsNM61mBa2mQGzhrF/Y1o3ztCYps9C9RzpchUJohp3uYoksW9driLHUx/FNH0GKtaRfa/TT9vzJ3mYNuQsaYVb3W9aN64kppHnbRfFUXn//Sf2ew3jzSYKn9OMG9G0cjTO2/3Lzy4e/zpmboLl3CXE8t2tEck3jaJv1cJwh1gETe+RzLfKl3EaxbTTNiFi1jJWWkw7jF1EcTj4Dqk4HNWV9Dgc/IyoOBz8jKg4HNXYPA5H9Wx7HI7qSnocjhrN43BU19HjcLCdTXE4+G/aFIeD76OKw8F3NsXhYDub4nDw39IoDgff2e47HHxfu+9w8F3tvsPB97T7Dgff0e47HHw/u+9wfLA+T5f/3wpAPK8VgGheK4CJTbcCMM1pBWCa1wrAeem1AhDPbwUgot8KwHvotgLg+TNbAXgXvVYAcwYdVgDOGa8VgOun1wrAPK8VgNfTawXAfLFaAXg1vVYAU0MdVgDiOa0A3I+cVgCiOa0AXMOcVgDOEacVgM+30wqANKMVAPPRaAUwc61uBdRnBt0KYPq3bgUwM7RuBeCT5rQCcH10WgHMnKBbAYjmtQJwbE4rAGeJ0wrAWeK0ApiV1K2ALzSzFcDcbBxWwL+i8VkBzO1etQKYqqtaAcwuqVZAvU+qVkB9GtWtgC+sX8LcLAo=###1296:XlxV32DM 3fff 4f8eNq1WlF22zAMu5IogpJ9nW3N/Y8wxW23dakikUQ+9l6fY4MURQEU3vATN3Sc0PHvDVWrdrvd/zZoLcUqBL/Gc9GGah1mdfyO8YaoaillPL3esYFggOn43Y7xG+wcaMc/b9zwGO3Yjlb1TEYTPR3RjmQ0dcTqyVhQcURr2ZVpcUSzdI80RzSkK+npSE2vzdMlNb1vnrVJem2eLinps73fJZJmEnVFyzJJd8Tq6TqaI1qWSf7ycVnGsvSeVUc0pLu/O6IpUdnW0SpN2daxJL2y4ohWiMq2inYSdW0V6yCq2ipWJ2raKlYjKtoqlhH1bBXrzh7Xm+PJH8T/InW08fzt6tkvse7ffChiDkOvd7J56AbG43d2fff4HFs5PX4nE7z3aTZbp0LNSbbwrozuv3+fUygjTDM6yVXvVDy9NImH93y17/v9vCfe+SKH0dMIuuhunXxnl+5+t6qWzmnFTHvrOgh5aLA2MWbSaafEmGmvTju1fs4kuHrBv64ZlygVTVxnVSaVZu9cp+KdaTUAVYPrgtt2NNPIOekS7/xaJVNbM5GQ63JedXkbo+NtTHzneMM+MhFf9oFz+hk9xxdC5jBx6c+ai2S5xraYFby7juVpF4KeCUHPJH0qvftlW7Vx7L9jhTNkC2UUVbN1RkLNZ62HQtYyX35Gzu/k7uYW3vP9PKhT5brni5NBKxXPqKuVcHZRbl7P0AivcdbJnbsDYbzYFOPuuPQNxMjzudDnvp3Zkz3LMubrVd27Y86P6u3OCUT6jmfBrnY6TtdfP77g1qgjEsKaTJLBvNSBlXZKtnGdt41gHctLchQXbsDj3c7QOUESdqe/BNd3EnmTJQgeMNIeMAgeMMgeMAgeMAh3ZhDuzCB7wCD7JyB4OiB4wKDemkG+84LgAYN8b0aejUKqgZdo+uTWENJee1GOupwjNeARG/l2pUGP+CH70DlWAp8YmeOM7BEbwSM2sg9hBL0zgt4ZwSM2sn9hVL/BCHdFo6qdpT1iI+ulkbXOyB6xUSd5I3vElvaIQfaIQfaIQfWIQfaIQeZmEDxikD1ikDkW5CkGVM4GwSMG2SM28hnVF8yyzDk75BUv5v+o/oLgGYOUB+N/KY5Yl5+e8ZT2MXoaYe4p/YvB8JT2c5rf1DzrOgh5aKg28znkCOH571ueOhVqThLE807cMbT5vBzdgU7F2+OV/Lz8idYILNXSLNUILNXILNUILNUILNUILNVIzvdzvDhLNQJLNZKz9BwvylKNzFIt4YJ/n9NvzUmo0A==###1524:XlxV32DM 3fff 5dceNq9Wkta4zAMvpL1ipNyjjnAAO2S3az4uPu4SSi0JLVs/WUBbWPpt962FU96tJOykEhK+qInzTqplL/lOUsuz8+/9PzbWElf7WRjGTGbyv9hk28Pb6qg2SaXntFMjMvHff68yS87uMt8NXmyHrWMW+EtFLZKQg7OoTydZ9rRilyzzyiz5luaoS0ydOENAQ1/8tlO9Gg1GusW4xk75jlzyeHPirrV7+TFlnehaBTJ2k3rTQ1epB2Z1BGn9yNhEO6K9f7ozI58HsMYdf/XMcxlX28dMJdl3FWlQTvakce65OnNt7pEBJWnnrG5sT5lqHwGlm/CetOFd9+fY9euyXbtr514tKM5Q/EMqi1VpWvbNUjVevaweki7OibAWpHAWRlfe7RqJ22LrGrl0ab9rbliNarjAFiB2s5VUs2ZVNWLqjLVMXIYQap74dQUQeTCq+2oEkCvESCHdNlm2F0Hxi68/nNMAlS1Nh3JhXf/vNdn9f7dWQLvztos5qsluN0ZAyoThysTAyoTgysTAyoTAyoTAyoTN56lxy68/srEgMrEjbtw6sLrPYUyuEpxdZfDcC9mKF5NQwp2owXcjabubjQButEEyBABd6MF2o0m8DmVALWXAN1oh/fDCNJgi71qEcjHLbywRFK1rAC6zALuMgsg6gSw4gugqyLQLrMAu8wCOOMLdH2XcJdZwDsEAa/uAu4yC3S3IOAus4S7zAzuMjO4y8zQLjM/YPVGdpnpYfWwv8ssD9vT9XeZBdCBTYBdUwJUeAbowiA5EN3kEuUz3uiQSVwYN6eZK9R+7tQo//dYucc3BWaVNaL6NK5x1+am0NzkiGMJSZDCEpBTAkTUxuRIv4KhTRj+LBBXZRQABoV9oVV/ToCYmNpza/72fGUR7pVkFwsjUVPGOvTyRpmE6oWG6p2G5rbQ3AbIbAPIH6tPBo/mmDz6KxjahNGSDQqoudpbc7t8UreFAHSSrly7vtHSmif++zAEuIsprtuKlS5kzz13tx2GkA+G0NyRaunH8PoxFocxLXIgm3xxQOF723UJNBQNCvDk8CsY2oTRukNuwZCwTdXZm+71qgA8IoA6K+E6SyE7cCg7OTR3Cs3detL0xQ0BOokCeM8jIa/H37sr4O2ruW65ReMnlsP1nsHgzIJHy2EAOdR1owcpRywysH2Yti5Be2WxTj7a5/v4eDslOqSDvL/R8Xh4zk//6Ph64Kc/dHw5sNl7Ca5R/l6Ai4Gs5JPw7dFqGV8uCRbqrGaFRlU/XwR/Hc2+jH0yMy0cuTydVbhKyvnzjDOLXKb6cZy7Q3k7i53O87Tx3HDUDpeb3JYti16/yp750sVyC8Uc+CYrdbqiZhk/W5Arha3fZZd6XtpXCg81N1DTuZHZQK1N1KmBuknHDVreof0aX2izvghdrjSU6PmMoJUnrzwL3f4r13MU8AVhjpMlU76jXMavEC78JbLOvF+jhXvNSxf6ff6TxdA7+PU0cy5jt3iXp4VK0n9vbqJB###3012:XlxV32DM 34f1 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
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_tb_isim_beh1.wdb" id="1" type="auto">
<top_modules>
<top_module name="glbl" />
<top_module name="spiifc_tb" />
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="19" />
<wvobject fp_name="/spiifc_tb/SPI_MISO" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MISO</obj_property>
<obj_property name="ObjectShortName">SPI_MISO</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/txMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">txMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/txMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">txMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">rcMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcMemWE" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcMemWE</obj_property>
<obj_property name="ObjectShortName">rcMemWE</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/debug_out" type="array" db_ref_id="1">
<obj_property name="ElementShortName">debug_out[7:0]</obj_property>
<obj_property name="ObjectShortName">debug_out[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/Reset" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">Reset</obj_property>
<obj_property name="ObjectShortName">Reset</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SysClk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SysClk</obj_property>
<obj_property name="ObjectShortName">SysClk</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_CLK" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK</obj_property>
<obj_property name="ObjectShortName">SPI_CLK</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_MOSI" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MOSI</obj_property>
<obj_property name="ObjectShortName">SPI_MOSI</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_SS" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_SS</obj_property>
<obj_property name="ObjectShortName">SPI_SS</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_CLK_en" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK_en</obj_property>
<obj_property name="ObjectShortName">SPI_CLK_en</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/fdRcBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdRcBytes[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/fdTxBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdTxBytes[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/dummy" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dummy[31:0]</obj_property>
<obj_property name="ObjectShortName">dummy[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/currRcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">currRcByte[31:0]</obj_property>
<obj_property name="ObjectShortName">currRcByte[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcBytesNotEmpty" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="ObjectShortName">rcBytesNotEmpty[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcBytesStr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="ObjectShortName">rcBytesStr[80:1]</obj_property>
</wvobject>
</wave_config>
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_tb2_isim_beh1.wdb" id="1" type="auto">
<top_modules>
<top_module name="glbl" />
<top_module name="spiifc_tb2" />
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="19" />
<wvobject fp_name="/spiifc_tb2/SPI_MISO" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MISO</obj_property>
<obj_property name="ObjectShortName">SPI_MISO</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/txMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">txMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/txMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">txMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">rcMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcMemWE" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcMemWE</obj_property>
<obj_property name="ObjectShortName">rcMemWE</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/debug_out" type="array" db_ref_id="1">
<obj_property name="ElementShortName">debug_out[7:0]</obj_property>
<obj_property name="ObjectShortName">debug_out[7:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/Reset" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">Reset</obj_property>
<obj_property name="ObjectShortName">Reset</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SysClk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SysClk</obj_property>
<obj_property name="ObjectShortName">SysClk</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_CLK" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK</obj_property>
<obj_property name="ObjectShortName">SPI_CLK</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_MOSI" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MOSI</obj_property>
<obj_property name="ObjectShortName">SPI_MOSI</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_SS" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_SS</obj_property>
<obj_property name="ObjectShortName">SPI_SS</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_CLK_en" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK_en</obj_property>
<obj_property name="ObjectShortName">SPI_CLK_en</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/fdRcBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdRcBytes[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/fdTxBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdTxBytes[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/dummy" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dummy[31:0]</obj_property>
<obj_property name="ObjectShortName">dummy[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/currRcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">currRcByte[31:0]</obj_property>
<obj_property name="ObjectShortName">currRcByte[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcBytesNotEmpty" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="ObjectShortName">rcBytesNotEmpty[31:0]</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcBytesStr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="ObjectShortName">rcBytesStr[80:1]</obj_property>
</wvobject>
</wave_config>
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_tb2_isim_beh.wdb" id="1" type="auto">
<top_modules>
<top_module name="glbl" />
<top_module name="spiifc_tb2" />
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="23" />
<wvobject fp_name="/spiifc_tb2/SPI_MISO" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MISO</obj_property>
<obj_property name="ObjectShortName">SPI_MISO</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/txMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">txMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">rcMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcMemWE" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcMemWE</obj_property>
<obj_property name="ObjectShortName">rcMemWE</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/debug_out" type="array" db_ref_id="1">
<obj_property name="ElementShortName">debug_out[7:0]</obj_property>
<obj_property name="ObjectShortName">debug_out[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/Reset" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">Reset</obj_property>
<obj_property name="ObjectShortName">Reset</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SysClk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SysClk</obj_property>
<obj_property name="ObjectShortName">SysClk</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_CLK" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK</obj_property>
<obj_property name="ObjectShortName">SPI_CLK</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_MOSI" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MOSI</obj_property>
<obj_property name="ObjectShortName">SPI_MOSI</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_SS" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_SS</obj_property>
<obj_property name="ObjectShortName">SPI_SS</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/txMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">txMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/SPI_CLK_en" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK_en</obj_property>
<obj_property name="ObjectShortName">SPI_CLK_en</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/fdRcBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/fdTxBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/dummy" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dummy[31:0]</obj_property>
<obj_property name="ObjectShortName">dummy[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/currRcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">currRcByte[31:0]</obj_property>
<obj_property name="ObjectShortName">currRcByte[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcBytesNotEmpty" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="ObjectShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/rcBytesStr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="ObjectShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/uut/rcByteValid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcByteValid</obj_property>
<obj_property name="ObjectShortName">rcByteValid</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/uut/rcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcByte[7:0]</obj_property>
<obj_property name="ObjectShortName">rcByte[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/uut/rcBitIndex" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBitIndex[2:0]</obj_property>
<obj_property name="ObjectShortName">rcBitIndex[2:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb2/uut/state" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">state</obj_property>
<obj_property name="ObjectShortName">state</obj_property>
</wvobject>
</wave_config>
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_tb_isim_beh.wdb" id="1" type="auto">
<top_modules>
<top_module name="glbl" />
<top_module name="spiifc_tb" />
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="30" />
<wvobject fp_name="/spiifc_tb/SPI_MISO" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MISO</obj_property>
<obj_property name="ObjectShortName">SPI_MISO</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/txMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">txMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/txMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">txMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">rcMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcMemWE" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcMemWE</obj_property>
<obj_property name="ObjectShortName">rcMemWE</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/debug_out" type="array" db_ref_id="1">
<obj_property name="ElementShortName">debug_out[7:0]</obj_property>
<obj_property name="ObjectShortName">debug_out[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/Reset" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">Reset</obj_property>
<obj_property name="ObjectShortName">Reset</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SysClk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SysClk</obj_property>
<obj_property name="ObjectShortName">SysClk</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_CLK" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK</obj_property>
<obj_property name="ObjectShortName">SPI_CLK</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_MOSI" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MOSI</obj_property>
<obj_property name="ObjectShortName">SPI_MOSI</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_SS" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_SS</obj_property>
<obj_property name="ObjectShortName">SPI_SS</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/SPI_CLK_en" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK_en</obj_property>
<obj_property name="ObjectShortName">SPI_CLK_en</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/fdRcBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/fdTxBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/dummy" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dummy[31:0]</obj_property>
<obj_property name="ObjectShortName">dummy[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/currRcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">currRcByte[31:0]</obj_property>
<obj_property name="ObjectShortName">currRcByte[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcBytesNotEmpty" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="ObjectShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/rcBytesStr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="ObjectShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/packetStart" type="logic" db_ref_id="1">
<obj_property name="DisplayName">label</obj_property>
<obj_property name="ElementShortName">packetStart</obj_property>
<obj_property name="ObjectShortName">packetStart</obj_property>
<obj_property name="label">packetStart</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/validSpiBit" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">validSpiBit</obj_property>
<obj_property name="ObjectShortName">validSpiBit</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/rcByteValid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcByteValid</obj_property>
<obj_property name="ObjectShortName">rcByteValid</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/state" type="array" db_ref_id="1">
<obj_property name="ElementShortName">state[7:0]</obj_property>
<obj_property name="ObjectShortName">state[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/state_reg" type="array" db_ref_id="1">
<obj_property name="ElementShortName">state_reg[7:0]</obj_property>
<obj_property name="ObjectShortName">state_reg[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/rcByteValid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcByteValid</obj_property>
<obj_property name="ObjectShortName">rcByteValid</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/rcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcByte[7:0]</obj_property>
<obj_property name="ObjectShortName">rcByte[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/txBitIndex" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txBitIndex[2:0]</obj_property>
<obj_property name="ObjectShortName">txBitIndex[2:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/txBitIndex_reg" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txBitIndex_reg[2:0]</obj_property>
<obj_property name="ObjectShortName">txBitIndex_reg[2:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/txMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">txMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_tb/uut/txMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">txMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
</wave_config>
<?xml version="1.0" encoding="UTF-8"?>
<wave_config>
<wave_state>
</wave_state>
<db_ref_list>
<db_ref path="C:/Users/mjlyons/workspace/vSPI/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/spiifc_writereg_tb_isim_beh.wdb" id="1" type="auto">
<top_modules>
<top_module name="glbl" />
<top_module name="spiifc_writereg_tb" />
</top_modules>
</db_ref>
</db_ref_list>
<WVObjectSize size="33" />
<wvobject fp_name="/spiifc_writereg_tb/SPI_MISO" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MISO</obj_property>
<obj_property name="ObjectShortName">SPI_MISO</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/txMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">txMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/rcMemAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="ObjectShortName">rcMemAddr[11:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/rcMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">rcMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/rcMemWE" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcMemWE</obj_property>
<obj_property name="ObjectShortName">rcMemWE</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/debug_out" type="array" db_ref_id="1">
<obj_property name="ElementShortName">debug_out[7:0]</obj_property>
<obj_property name="ObjectShortName">debug_out[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/Reset" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">Reset</obj_property>
<obj_property name="ObjectShortName">Reset</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/SysClk" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SysClk</obj_property>
<obj_property name="ObjectShortName">SysClk</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/SPI_CLK" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK</obj_property>
<obj_property name="ObjectShortName">SPI_CLK</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/SPI_MOSI" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_MOSI</obj_property>
<obj_property name="ObjectShortName">SPI_MOSI</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/SPI_SS" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_SS</obj_property>
<obj_property name="ObjectShortName">SPI_SS</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/txMemData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txMemData[7:0]</obj_property>
<obj_property name="ObjectShortName">txMemData[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/SPI_CLK_en" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">SPI_CLK_en</obj_property>
<obj_property name="ObjectShortName">SPI_CLK_en</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/fdRcBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdRcBytes[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/fdTxBytes" type="array" db_ref_id="1">
<obj_property name="ElementShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="ObjectShortName">fdTxBytes[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/dummy" type="array" db_ref_id="1">
<obj_property name="ElementShortName">dummy[31:0]</obj_property>
<obj_property name="ObjectShortName">dummy[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/currRcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">currRcByte[31:0]</obj_property>
<obj_property name="ObjectShortName">currRcByte[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/rcBytesNotEmpty" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="ObjectShortName">rcBytesNotEmpty[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/rcBytesStr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="ObjectShortName">rcBytesStr[80:1]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/regAddr" type="array" db_ref_id="1">
<obj_property name="ElementShortName">regAddr[3:0]</obj_property>
<obj_property name="ObjectShortName">regAddr[3:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/regReadData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">regReadData[31:0]</obj_property>
<obj_property name="ObjectShortName">regReadData[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/regWriteEn" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">regWriteEn</obj_property>
<obj_property name="ObjectShortName">regWriteEn</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/regWriteData" type="array" db_ref_id="1">
<obj_property name="ElementShortName">regWriteData[31:0]</obj_property>
<obj_property name="ObjectShortName">regWriteData[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/rcByteValid" type="logic" db_ref_id="1">
<obj_property name="ElementShortName">rcByteValid</obj_property>
<obj_property name="ObjectShortName">rcByteValid</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/rcByte" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcByte[7:0]</obj_property>
<obj_property name="ObjectShortName">rcByte[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/state" type="array" db_ref_id="1">
<obj_property name="ElementShortName">state[7:0]</obj_property>
<obj_property name="ObjectShortName">state[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/state_reg" type="array" db_ref_id="1">
<obj_property name="ElementShortName">state_reg[7:0]</obj_property>
<obj_property name="ObjectShortName">state_reg[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/command" type="array" db_ref_id="1">
<obj_property name="ElementShortName">command[7:0]</obj_property>
<obj_property name="ObjectShortName">command[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/rcWordByteId" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcWordByteId[1:0]</obj_property>
<obj_property name="ObjectShortName">rcWordByteId[1:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/rcWord" type="array" db_ref_id="1">
<obj_property name="ElementShortName">rcWord[31:0]</obj_property>
<obj_property name="ObjectShortName">rcWord[31:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/regReadByte_oreg" type="array" db_ref_id="1">
<obj_property name="ElementShortName">regReadByte_oreg[7:0]</obj_property>
<obj_property name="ObjectShortName">regReadByte_oreg[7:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/txBitIndex" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txBitIndex[2:0]</obj_property>
<obj_property name="ObjectShortName">txBitIndex[2:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
<wvobject fp_name="/spiifc_writereg_tb/uut/txBitIndex_reg" type="array" db_ref_id="1">
<obj_property name="ElementShortName">txBitIndex_reg[2:0]</obj_property>
<obj_property name="ObjectShortName">txBitIndex_reg[2:0]</obj_property>
<obj_property name="Radix">HEXRADIX</obj_property>
</wvobject>
</wave_config>
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/proc_common_pkg.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/ipif_pkg.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_muxcy.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/or_gate128.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/family_support.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/pselect_f.vhd"
vhdl proc_common_v3_00_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/proc_common_v3_00_a/hdl/vhdl/counter_f.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/flex_addr_cntr.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/addr_reg_cntr_brst_flex.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_address_decoder.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/burst_support.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/wr_buffer.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/be_reset_gen.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plb_slave_attachment.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/data_mirror_128.vhd"
vhdl plbv46_slave_burst_v1_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/plbv46_slave_burst_v1_01_a/hdl/vhdl/plbv46_slave_burst.vhd"
vhdl interrupt_control_v2_01_a "C:\Xilinx\13.2\ISE_DS\EDK/hw/XilinxProcessorIPLib/pcores/interrupt_control_v2_01_a/hdl/vhdl/interrupt_control.vhd"
verilog spiifc_v1_00_a "../../hdl/verilog/user_logic.v"
vhdl spiifc_v1_00_a "../../hdl/vhdl/spiifc.vhd"
run
-opt_level 2
-opt_mode speed
-ifmt mixed
-ifn "C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\synthesis\spiifc_xst.prj"
-top spiifc
-p virtex6
-ofn "C:\Users\mjlyons\workspace\vSPI\projnav\xps\pcores\spiifc_v1_00_a\devl\synthesis\spiifc_xst.ngc"
-iobuf NO
-rtlview YES
-hierarchy_separator /
-work_lib spiifc_v1_00_a
/*******************************************************************************
* This file is owned and controlled by Xilinx and must be used solely *
* for design, simulation, implementation and creation of design files *
* limited to Xilinx devices or technologies. Use with non-Xilinx *
* devices or technologies is expressly prohibited and immediately *
* terminates your license. *
* *
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY *
* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. 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. *
* *
* Xilinx products are not intended for use in life support appliances, *
* devices, or systems. Use in such applications are expressly *
* prohibited. *
* *
* (c) Copyright 1995-2012 Xilinx, Inc. *
* All rights reserved. *
*******************************************************************************/
// You must compile the wrapper file buffermem.v when simulating
// the core, buffermem. When compiling the wrapper file, be sure to
// reference the XilinxCoreLib Verilog simulation library. For detailed
// instructions, please refer to the "CORE Generator Help".
// The synthesis directives "translate_off/translate_on" specified below are
// supported by Xilinx, Mentor Graphics and Synplicity synthesis
// tools. Ensure they are correct for your synthesis tool(s).
`timescale 1ns/1ps
module buffermem(
clka,
ena,
wea,
addra,
dina,
douta,
clkb,
enb,
web,
addrb,
dinb,
doutb
);
input clka;
input ena;
input [0 : 0] wea;
input [11 : 0] addra;
input [7 : 0] dina;
output [7 : 0] douta;
input clkb;
input enb;
input [0 : 0] web;
input [9 : 0] addrb;
input [31 : 0] dinb;
output [31 : 0] doutb;
// synthesis translate_off
BLK_MEM_GEN_V6_2 #(
.C_ADDRA_WIDTH(12),
.C_ADDRB_WIDTH(10),
.C_ALGORITHM(1),
.C_AXI_ID_WIDTH(4),
.C_AXI_SLAVE_TYPE(0),
.C_AXI_TYPE(1),
.C_BYTE_SIZE(9),
.C_COMMON_CLK(1),
.C_DEFAULT_DATA("0"),
.C_DISABLE_WARN_BHV_COLL(0),
.C_DISABLE_WARN_BHV_RANGE(0),
.C_FAMILY("spartan6"),
.C_HAS_AXI_ID(0),
.C_HAS_ENA(1),
.C_HAS_ENB(1),
.C_HAS_INJECTERR(0),
.C_HAS_MEM_OUTPUT_REGS_A(0),
.C_HAS_MEM_OUTPUT_REGS_B(0),
.C_HAS_MUX_OUTPUT_REGS_A(0),
.C_HAS_MUX_OUTPUT_REGS_B(0),
.C_HAS_REGCEA(0),
.C_HAS_REGCEB(0),
.C_HAS_RSTA(0),
.C_HAS_RSTB(0),
.C_HAS_SOFTECC_INPUT_REGS_A(0),
.C_HAS_SOFTECC_OUTPUT_REGS_B(0),
.C_INIT_FILE_NAME("no_coe_file_loaded"),
.C_INITA_VAL("0"),
.C_INITB_VAL("0"),
.C_INTERFACE_TYPE(0),
.C_LOAD_INIT_FILE(0),
.C_MEM_TYPE(2),
.C_MUX_PIPELINE_STAGES(0),
.C_PRIM_TYPE(1),
.C_READ_DEPTH_A(4096),
.C_READ_DEPTH_B(1024),
.C_READ_WIDTH_A(8),
.C_READ_WIDTH_B(32),
.C_RST_PRIORITY_A("CE"),
.C_RST_PRIORITY_B("CE"),
.C_RST_TYPE("SYNC"),
.C_RSTRAM_A(0),
.C_RSTRAM_B(0),
.C_SIM_COLLISION_CHECK("ALL"),
.C_USE_BYTE_WEA(0),
.C_USE_BYTE_WEB(0),
.C_USE_DEFAULT_DATA(0),
.C_USE_ECC(0),
.C_USE_SOFTECC(0),
.C_WEA_WIDTH(1),
.C_WEB_WIDTH(1),
.C_WRITE_DEPTH_A(4096),
.C_WRITE_DEPTH_B(1024),
.C_WRITE_MODE_A("WRITE_FIRST"),
.C_WRITE_MODE_B("WRITE_FIRST"),
.C_WRITE_WIDTH_A(8),
.C_WRITE_WIDTH_B(32),
.C_XDEVICEFAMILY("spartan6")
)
inst (
.CLKA(clka),
.ENA(ena),
.WEA(wea),
.ADDRA(addra),
.DINA(dina),
.DOUTA(douta),
.CLKB(clkb),
.ENB(enb),
.WEB(web),
.ADDRB(addrb),
.DINB(dinb),
.DOUTB(doutb),
.RSTA(),
.REGCEA(),
.RSTB(),
.REGCEB(),
.INJECTSBITERR(),
.INJECTDBITERR(),
.SBITERR(),
.DBITERR(),
.RDADDRECC(),
.S_ACLK(),
.S_ARESETN(),
.S_AXI_AWID(),
.S_AXI_AWADDR(),
.S_AXI_AWLEN(),
.S_AXI_AWSIZE(),
.S_AXI_AWBURST(),
.S_AXI_AWVALID(),
.S_AXI_AWREADY(),
.S_AXI_WDATA(),
.S_AXI_WSTRB(),
.S_AXI_WLAST(),
.S_AXI_WVALID(),
.S_AXI_WREADY(),
.S_AXI_BID(),
.S_AXI_BRESP(),
.S_AXI_BVALID(),
.S_AXI_BREADY(),
.S_AXI_ARID(),
.S_AXI_ARADDR(),
.S_AXI_ARLEN(),
.S_AXI_ARSIZE(),
.S_AXI_ARBURST(),
.S_AXI_ARVALID(),
.S_AXI_ARREADY(),
.S_AXI_RID(),
.S_AXI_RDATA(),
.S_AXI_RRESP(),
.S_AXI_RLAST(),
.S_AXI_RVALID(),
.S_AXI_RREADY(),
.S_AXI_INJECTSBITERR(),
.S_AXI_INJECTDBITERR(),
.S_AXI_SBITERR(),
.S_AXI_DBITERR(),
.S_AXI_RDADDRECC()
);
// synthesis translate_on
endmodule
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 16:46:12 03/02/2012
// Design Name:
// Module Name: spiifc
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module spiifc(
Reset,
SysClk,
SPI_CLK,
SPI_MISO,
SPI_MOSI,
SPI_SS,
txMemAddr,
txMemData,
rcMemAddr,
rcMemData,
rcMemWE,
regAddr,
regReadData,
regWriteEn,
regWriteData,
debug_out
);
//
// Parameters
//
parameter AddrBits = 12;
parameter RegAddrBits = 4;
//
// Defines
//
`define CMD_READ_START 8'd1
`define CMD_READ_MORE 8'd2
`define CMD_WRITE_START 8'd3
`define CMD_WRITE_MORE 8'd4
`define CMD_INTERRUPT 8'd5
`define CMD_REG_BASE 8'd128
`define CMD_REG_BIT 7
`define CMD_REG_WE_BIT 6
`define CMD_REG_ID_MASK 8'h3F
`define STATE_GET_CMD 8'd0
`define STATE_READING 8'd1
`define STATE_WRITING 8'd2
`define STATE_WRITE_INTR 8'd3
`define STATE_BUILD_WORD 8'd4
`define STATE_SEND_WORD 8'd5
//
// Input/Outputs
//
input Reset;
input SysClk;
input SPI_CLK;
output SPI_MISO; // outgoing (from respect of this module)
input SPI_MOSI; // incoming (from respect of this module)
input SPI_SS;
output [AddrBits-1:0] txMemAddr; // outgoing data
input [7:0] txMemData;
output [AddrBits-1:0] rcMemAddr; // incoming data
output [7:0] rcMemData;
output rcMemWE;
output [RegAddrBits-1:0] regAddr; // Register read address (combinational)
input [31:0] regReadData; // Result of register read
output regWriteEn; // Enable write to register, otherwise read
output [31:0] regWriteData; // Register write data
output [7:0] debug_out;
//
// Registers
//
reg SPI_CLK_reg; // Stabalized version of SPI_CLK
reg SPI_SS_reg; // Stabalized version of SPI_SS
reg SPI_MOSI_reg; // Stabalized version of SPI_MOSI
reg prev_spiClk; // Value of SPI_CLK during last SysClk cycle
reg prev_spiSS; // Value of SPI_SS during last SysClk cycle
reg [7:0] state_reg; // Register backing the 'state' wire
reg [7:0] rcByte_reg; // Register backing 'rcByte'
reg [2:0] rcBitIndex_reg; // Register backing 'rcBitIndex'
reg [AddrBits-1:0] rcMemAddr_reg; // Byte addr to write MOSI data to
reg [7:0] debug_reg; // register backing debug_out signal
reg [2:0] txBitIndex_reg; // Register backing txBitIndex
reg [AddrBits-1:0] txMemAddr_reg; // Register backing txAddr
reg [7:0] command; // Command being handled
reg [31:0] rcWord; // Incoming word being built
reg [1:0] rcWordByteId; // Which byte the in the rcWord to map to
reg [RegAddrBits-1:0] regAddr_reg; // Address of register to read/write to
//
// Wires
//
wire risingSpiClk; // Did the SPI_CLK rise since last SysClk cycle?
wire validSpiBit; // Are the SPI MOSI/MISO bits new and valid?
reg [7:0] state; // Current state in the module's state machine (always @* effectively wire)
wire rcByteValid; // rcByte is valid and new
wire [7:0] rcByte; // Byte received from master
wire [2:0] rcBitIndex; // Bit of rcByte to write to next
reg [2:0] txBitIndex; // bit of txByte to send to master next
reg [AddrBits-1:0] txMemAddr_oreg; // Wirereg piped to txMemAddr output
reg [7:0] regReadByte_oreg; // Which byte of the reg word we're reading out master
// Save buffered SPI inputs
always @(posedge SysClk) begin
SPI_CLK_reg <= SPI_CLK;
SPI_SS_reg <= SPI_SS;
SPI_MOSI_reg <= SPI_MOSI;
end
// Detect new valid bit
always @(posedge SysClk) begin
prev_spiClk <= SPI_CLK_reg;
end
assign risingSpiClk = SPI_CLK_reg & (~prev_spiClk);
assign validSpiBit = risingSpiClk & (~SPI_SS_reg);
// Detect new SPI packet (SS dropped low)
always @(posedge SysClk) begin
prev_spiSS <= SPI_SS_reg;
end
assign packetStart = prev_spiSS & (~SPI_SS_reg);
// Build incoming byte
always @(posedge SysClk) begin
if (validSpiBit) begin
rcByte_reg[rcBitIndex] <= SPI_MOSI_reg;
rcBitIndex_reg <= (rcBitIndex > 0 ? rcBitIndex - 1 : 7);
end else begin
rcBitIndex_reg <= rcBitIndex;
end
end
assign rcBitIndex = (Reset || packetStart ? 7 : rcBitIndex_reg);
assign rcByte = {rcByte_reg[7:1], SPI_MOSI_reg};
assign rcByteValid = (validSpiBit && rcBitIndex == 0 ? 1 : 0);
// Incoming MOSI data buffer management
assign rcMemAddr = rcMemAddr_reg;
assign rcMemData = rcByte;
assign rcMemWE = (state == `STATE_READING && rcByteValid ? 1 : 0);
always @(posedge SysClk) begin
if (Reset || (`STATE_GET_CMD == state && rcByteValid)) begin
rcMemAddr_reg <= 0;
end else if (rcMemWE) begin
rcMemAddr_reg <= rcMemAddr + 1;
end else begin
rcMemAddr_reg <= rcMemAddr;
end
end
// Outgoing MISO data buffer management
always @(*) begin
if (Reset || (state == `STATE_GET_CMD && rcByteValid &&
(rcByte == `CMD_WRITE_START ||
rcByte[`CMD_REG_BIT:`CMD_REG_WE_BIT] == 2'b11)
)) begin
txBitIndex <= 3'd7;
txMemAddr_oreg <= 0;
end else begin
txBitIndex <= txBitIndex_reg;
//txMemAddr_oreg <= txMemAddr_reg;
if ((state == `STATE_WRITING || state == `STATE_SEND_WORD) &&
validSpiBit && txBitIndex == 0) begin
txMemAddr_oreg <= txMemAddr_reg + 1;
end else begin
txMemAddr_oreg <= txMemAddr_reg;
end
end
end
always @(posedge SysClk) begin
if (validSpiBit && (state == `STATE_WRITING || state == `STATE_SEND_WORD)) begin
txBitIndex_reg <= (txBitIndex == 0 ? 7 : txBitIndex - 1);
end else begin
txBitIndex_reg <= txBitIndex;
end
txMemAddr_reg <= txMemAddr;
// if (state == `STATE_WRITING && validSpiBit && txBitIndex == 0) begin
// txMemAddr_reg <= txMemAddr + 1;
// end else begin
// txMemAddr_reg <= txMemAddr;
// end
end
assign txMemAddr = txMemAddr_oreg;
assign SPI_MISO = (state == `STATE_SEND_WORD ? regReadByte_oreg[txBitIndex] : txMemData[txBitIndex]);
// State machine
always @(*) begin
if (Reset || packetStart) begin
state <= `STATE_GET_CMD;
// Handled in state_reg logic, should be latched, not immediate.
// end else if (state_reg == `STATE_GET_CMD && rcByteValid) begin
// state <= rcByte;
end else begin
state <= state_reg;
end
end
always @(posedge SysClk) begin
if (`STATE_GET_CMD == state && rcByteValid) begin
if (`CMD_READ_START == rcByte) begin
state_reg <= `STATE_READING;
end else if (`CMD_READ_MORE == rcByte) begin
state_reg <= `STATE_READING;
end else if (`CMD_WRITE_START == rcByte) begin
state_reg <= `STATE_WRITING;
end else if (`CMD_WRITE_MORE == rcByte) begin
state_reg <= `STATE_WRITING;
end else if (rcByte[`CMD_REG_BIT] != 0) begin
// Register access
rcWordByteId <= 0;
command <= `CMD_REG_BASE; // Write reg Read reg
state_reg <= (rcByte[`CMD_REG_WE_BIT] ? `STATE_BUILD_WORD : `STATE_SEND_WORD);
end else if (`CMD_INTERRUPT == rcByte) begin
// TODO: NYI
end
end else if (`STATE_BUILD_WORD == state && rcByteValid) begin
if (0 == rcWordByteId) begin
rcWord[31:24] <= rcByte;
rcWordByteId <= 1;
end else if (1 == rcWordByteId) begin
rcWord[23:16] <= rcByte;
rcWordByteId <= 2;
end else if (2 == rcWordByteId) begin
rcWord[15:8] <= rcByte;
rcWordByteId <= 3;
end else if (3 == rcWordByteId) begin
rcWord[7:0] <= rcByte;
state_reg <= `STATE_GET_CMD;
end
end else if (`STATE_SEND_WORD == state && rcByteValid) begin
rcWordByteId <= rcWordByteId + 1;
state_reg <= (rcWordByteId == 3 ? `STATE_GET_CMD : `STATE_SEND_WORD);
end else begin
state_reg <= state;
end
end
// Register logic
assign regAddr = (`STATE_GET_CMD == state && rcByteValid && rcByte[`CMD_REG_BIT] ? (rcByte & `CMD_REG_ID_MASK) : regAddr_reg);
assign regWriteEn = (`STATE_BUILD_WORD == state && rcByteValid && 3 == rcWordByteId ? 1 : 0);
assign regWriteData = {rcWord[31:8], rcByte};
always @(posedge SysClk) begin
regAddr_reg <= regAddr;
end
always @(*) begin
case (rcWordByteId)
0: regReadByte_oreg <= regReadData[31:24];
1: regReadByte_oreg <= regReadData[23:16];
2: regReadByte_oreg <= regReadData[15:8];
3: regReadByte_oreg <= regReadData[7:0];
endcase
end
// Debugging
always @(posedge SysClk) begin
if (rcByteValid) begin
debug_reg <= rcByte;
end
end
assign debug_out = debug_reg;
endmodule
//----------------------------------------------------------------------------
// user_logic.vhd - module
//----------------------------------------------------------------------------
//
// ***************************************************************************
// ** Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. **
// ** **
// ** Xilinx, Inc. **
// ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
// ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
// ** SOLUTIONS FOR XILINX DEVICES. 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. **
// ** **
// ***************************************************************************
//
//----------------------------------------------------------------------------
// Filename: user_logic.vhd
// Version: 1.00.a
// Description: User logic module.
// Date: Tue Feb 28 11:11:15 2012 (by Create and Import Peripheral Wizard)
// Verilog Standard: Verilog-2001
//----------------------------------------------------------------------------
// Naming Conventions:
// active low signals: "*_n"
// clock signals: "clk", "clk_div#", "clk_#x"
// reset signals: "rst", "rst_n"
// generics: "C_*"
// user defined types: "*_TYPE"
// state machine next state: "*_ns"
// state machine current state: "*_cs"
// combinatorial signals: "*_com"
// pipelined or register delay signals: "*_d#"
// counter signals: "*cnt*"
// clock enable signals: "*_ce"
// internal version of output port: "*_i"
// device pins: "*_pin"
// ports: "- Names begin with Uppercase"
// processes: "*_PROCESS"
// component instantiations: "<ENTITY_>I_<#|FUNC>"
//----------------------------------------------------------------------------
module user_logic
(
// -- ADD USER PORTS BELOW THIS LINE ---------------
// --USER ports added here
SPI_CLK,
SPI_MOSI,
SPI_MISO,
SPI_SS,
// -- ADD USER PORTS ABOVE THIS LINE ---------------
// -- DO NOT EDIT BELOW THIS LINE ------------------
// -- Bus protocol ports, do not add to or delete
Bus2IP_Clk, // Bus to IP clock
Bus2IP_Reset, // Bus to IP reset
Bus2IP_Addr, // Bus to IP address bus
Bus2IP_CS, // Bus to IP chip select for user logic memory selection
Bus2IP_RNW, // Bus to IP read/not write
Bus2IP_Data, // Bus to IP data bus
Bus2IP_BE, // Bus to IP byte enables
Bus2IP_RdCE, // Bus to IP read chip enable
Bus2IP_WrCE, // Bus to IP write chip enable
Bus2IP_Burst, // Bus to IP burst-mode qualifier
Bus2IP_BurstLength, // Bus to IP burst length
Bus2IP_RdReq, // Bus to IP read request
Bus2IP_WrReq, // Bus to IP write request
IP2Bus_AddrAck, // IP to Bus address acknowledgement
IP2Bus_Data, // IP to Bus data bus
IP2Bus_RdAck, // IP to Bus read transfer acknowledgement
IP2Bus_WrAck, // IP to Bus write transfer acknowledgement
IP2Bus_Error, // IP to Bus error response
IP2Bus_IntrEvent // IP to Bus interrupt event
// -- DO NOT EDIT ABOVE THIS LINE ------------------
); // user_logic
// -- ADD USER PARAMETERS BELOW THIS LINE ------------
// --USER parameters added here
// -- ADD USER PARAMETERS ABOVE THIS LINE ------------
// -- DO NOT EDIT BELOW THIS LINE --------------------
// -- Bus protocol parameters, do not add to or delete
parameter C_SLV_AWIDTH = 32;
parameter C_SLV_DWIDTH = 32;
parameter C_NUM_REG = 16;
parameter C_NUM_MEM = 2;
parameter C_NUM_INTR = 1;
// -- DO NOT EDIT ABOVE THIS LINE --------------------
// -- ADD USER PORTS BELOW THIS LINE -----------------
// --USER ports added here
input SPI_CLK;
input SPI_MOSI;
output SPI_MISO;
input SPI_SS;
// -- ADD USER PORTS ABOVE THIS LINE -----------------
// -- DO NOT EDIT BELOW THIS LINE --------------------
// -- Bus protocol ports, do not add to or delete
input Bus2IP_Clk;
input Bus2IP_Reset;
input [0 : C_SLV_AWIDTH-1] Bus2IP_Addr;
input [0 : C_NUM_MEM-1] Bus2IP_CS;
input Bus2IP_RNW;
input [0 : C_SLV_DWIDTH-1] Bus2IP_Data;
input [0 : C_SLV_DWIDTH/8-1] Bus2IP_BE;
input [0 : C_NUM_REG-1] Bus2IP_RdCE;
input [0 : C_NUM_REG-1] Bus2IP_WrCE;
input Bus2IP_Burst;
input [0 : 8] Bus2IP_BurstLength;
input Bus2IP_RdReq;
input Bus2IP_WrReq;
output IP2Bus_AddrAck;
output [0 : C_SLV_DWIDTH-1] IP2Bus_Data;
output IP2Bus_RdAck;
output IP2Bus_WrAck;
output IP2Bus_Error;
output [0 : C_NUM_INTR-1] IP2Bus_IntrEvent;
// -- DO NOT EDIT ABOVE THIS LINE --------------------
//----------------------------------------------------------------------------
// Implementation
//----------------------------------------------------------------------------
// --USER nets declarations added here, as needed for user logic
// Memmap memory logic lines
wire [0 : C_NUM_MEM-1 ] mem_enb; // Port B: sysbus/dma
wire [0 : C_NUM_MEM-1 ] mem_web;
wire [0 : C_NUM_MEM-1] mem_write;
wire [0 : C_NUM_MEM-1] mem_read;
reg [0 : C_NUM_MEM-1 ] mem_read_prev;
// mosiMem (mem0): data received from master
wire mosiMem_wea;
wire [0 : 11] mosiMem_addra;
wire [0 : 7 ] mosiMem_dina;
wire [0 : 9 ] mosiMem_addrb;
wire [0 : 31] mosiMem_dinb;
wire [0 : 31] mosiMem_doutb;
// misoMem (mem1): data to send to master
wire [0 : 11] misoMem_addra;
wire [0 : 7 ] misoMem_douta;
wire [0 : 9 ] misoMem_addrb;
wire [0 : 31] misoMem_dinb;
wire [0 : 31] misoMem_doutb;
// Nets for user logic slave model s/w accessible register example
reg [0 : C_SLV_DWIDTH-1] slv_reg [0:15];
wire [0 : 15] slv_reg_write_sel;
wire [0 : 15] slv_reg_read_sel;
reg [0 : C_SLV_DWIDTH-1] slv_ip2bus_data;
wire slv_read_ack;
wire slv_write_ack;
integer byte_index, bit_index;
// SPI register access
wire [3 : 0] spiRegAddr;
wire [C_SLV_DWIDTH-1 : 0] spiRegWriteData;
wire spiRegWE;
reg [C_SLV_DWIDTH-1 : 0] spiRegReadData_wreg;
// --USER logic implementation added here
// memory interface logic
assign mem_enb = mem_write | mem_read;
assign mem_web = mem_write;
assign mosiMem_addrb = Bus2IP_Addr[20:29];
assign mosiMem_dinb = Bus2IP_Data;
assign misoMem_addrb = Bus2IP_Addr[20:29];
assign misoMem_dinb = Bus2IP_Data;
assign mem_write = Bus2IP_CS & {C_NUM_MEM{Bus2IP_WrReq & (~Bus2IP_RNW)}};
assign mem_read = Bus2IP_CS & {C_NUM_MEM{Bus2IP_RdReq & Bus2IP_RNW}};
always @(posedge Bus2IP_Clk) begin
mem_read_prev <= mem_read;
end
// Mem0: Memory buffer storing data coming from master
buffermem mosiMem (
.clka(Bus2IP_Clk), // input clka
.ena(1'b1), // input ena
.wea(mosiMem_wea), // Always writing, never reading
.addra({mosiMem_addra}), // input [11 : 0] addra
.dina({mosiMem_dina}), // input [7 : 0] dina
// .douta(mosiMem_douta), // NEVER USED: output [7 : 0] douta
.clkb(Bus2IP_Clk), // input clkb
.enb(mem_enb[0]), // input enb
.web(mem_web[0]), // input [0 : 0] web
.addrb({mosiMem_addrb}), // input [9 : 0] addrb
.dinb({mosiMem_dinb}), // input [31 : 0] dinb
.doutb({mosiMem_doutb}) // output [31 : 0] doutb
);
// Mem1: Memory buffer storing data to send to master
buffermem misoMem (
.clka(Bus2IP_Clk), // input clka
.ena(1'b1), // input ena
.wea(1'b0), // Always reading, never writing
.addra({misoMem_addra}), // input [11 : 0] addra
// .dina(dina), // input [7 : 0] dina
.douta({misoMem_douta}), // output [7 : 0] douta
.clkb(Bus2IP_Clk), // input clkb
.enb(mem_enb[1]), // input enb
.web(mem_web[1]), // input [0 : 0] web
.addrb({misoMem_addrb}), // input [9 : 0] addrb
.dinb({misoMem_dinb}), // input [31 : 0] dinb
.doutb({misoMem_doutb}) // output [31 : 0] doutb
);
spiifc spi (
.Reset(Bus2IP_Reset),
.SysClk(Bus2IP_Clk),
.SPI_CLK(SPI_CLK),
.SPI_MISO(SPI_MISO),
.SPI_MOSI(SPI_MOSI),
.SPI_SS(SPI_SS),
.txMemAddr(misoMem_addra),
.txMemData(misoMem_douta),
.rcMemAddr(mosiMem_addra),
.rcMemData(mosiMem_dina),
.rcMemWE(mosiMem_wea),
.regAddr(spiRegAddr),
.regReadData(spiRegReadData_wreg),
.regWriteData(spiRegWriteData),
.regWriteEn(spiRegWE)
);
// ------------------------------------------------------
// Example code to read/write user logic slave model s/w accessible registers
//
// Note:
// The example code presented here is to show you one way of reading/writing
// software accessible registers implemented in the user logic slave model.
// Each bit of the Bus2IP_WrCE/Bus2IP_RdCE signals is configured to correspond
// to one software accessible register by the top level template. For example,
// if you have four 32 bit software accessible registers in the user logic,
// you are basically operating on the following memory mapped registers:
//
// Bus2IP_WrCE/Bus2IP_RdCE Memory Mapped Register
// "1000" C_BASEADDR + 0x0
// "0100" C_BASEADDR + 0x4
// "0010" C_BASEADDR + 0x8
// "0001" C_BASEADDR + 0xC
//
// ------------------------------------------------------
assign
slv_reg_write_sel = Bus2IP_WrCE[0:15],
slv_reg_read_sel = Bus2IP_RdCE[0:15],
slv_write_ack = Bus2IP_WrCE[0] || Bus2IP_WrCE[1] || Bus2IP_WrCE[2] || Bus2IP_WrCE[3] || Bus2IP_WrCE[4] || Bus2IP_WrCE[5] || Bus2IP_WrCE[6] || Bus2IP_WrCE[7] || Bus2IP_WrCE[8] || Bus2IP_WrCE[9] || Bus2IP_WrCE[10] || Bus2IP_WrCE[11] || Bus2IP_WrCE[12] || Bus2IP_WrCE[13] || Bus2IP_WrCE[14] || Bus2IP_WrCE[15],
slv_read_ack = Bus2IP_RdCE[0] || Bus2IP_RdCE[1] || Bus2IP_RdCE[2] || Bus2IP_RdCE[3] || Bus2IP_RdCE[4] || Bus2IP_RdCE[5] || Bus2IP_RdCE[6] || Bus2IP_RdCE[7] || Bus2IP_RdCE[8] || Bus2IP_RdCE[9] || Bus2IP_RdCE[10] || Bus2IP_RdCE[11] || Bus2IP_RdCE[12] || Bus2IP_RdCE[13] || Bus2IP_RdCE[14] || Bus2IP_RdCE[15];
genvar regIndex;
generate
for (regIndex = 0; regIndex < 16; regIndex = regIndex + 1) begin : REG_LOGIC
// Reg write logic
always @(posedge Bus2IP_Clk) begin
if (Bus2IP_Reset == 1) begin
slv_reg[regIndex] <= 0;
end else if (spiRegWE && regIndex == spiRegAddr) begin
slv_reg[regIndex] <= spiRegWriteData;
end else if (slv_reg_write_sel[regIndex]) begin
for ( byte_index = 0; byte_index <= (C_SLV_DWIDTH/8)-1; byte_index = byte_index + 1 ) begin
if ( Bus2IP_BE[byte_index] == 1) begin
for ( bit_index = byte_index*8; bit_index <= byte_index*8+7; bit_index = bit_index+1) begin
slv_reg[regIndex][bit_index] <= Bus2IP_Data[bit_index];
end
end
end
end
end
end
endgenerate
// implement slave model register read mux
always @( slv_reg_read_sel or slv_reg[0] or slv_reg[1] or slv_reg[2]
or slv_reg[3] or slv_reg[4] or slv_reg[5] or slv_reg[6] or slv_reg[7]
or slv_reg[8] or slv_reg[9] or slv_reg[10] or slv_reg[11] or slv_reg[12]
or slv_reg[13] or slv_reg[14] or slv_reg[15] )
begin: SLAVE_REG_READ_PROC
case ( slv_reg_read_sel )
16'b1000000000000000 : slv_ip2bus_data <= slv_reg[0];
16'b0100000000000000 : slv_ip2bus_data <= slv_reg[1];
16'b0010000000000000 : slv_ip2bus_data <= slv_reg[2];
16'b0001000000000000 : slv_ip2bus_data <= slv_reg[3];
16'b0000100000000000 : slv_ip2bus_data <= slv_reg[4];
16'b0000010000000000 : slv_ip2bus_data <= slv_reg[5];
16'b0000001000000000 : slv_ip2bus_data <= slv_reg[6];
16'b0000000100000000 : slv_ip2bus_data <= slv_reg[7];
16'b0000000010000000 : slv_ip2bus_data <= slv_reg[8];
16'b0000000001000000 : slv_ip2bus_data <= slv_reg[9];
16'b0000000000100000 : slv_ip2bus_data <= slv_reg[10];
16'b0000000000010000 : slv_ip2bus_data <= slv_reg[11];
16'b0000000000001000 : slv_ip2bus_data <= slv_reg[12];
16'b0000000000000100 : slv_ip2bus_data <= slv_reg[13];
16'b0000000000000010 : slv_ip2bus_data <= slv_reg[14];
16'b0000000000000001 : slv_ip2bus_data <= slv_reg[15];
default : slv_ip2bus_data <= 0;
endcase
end // SLAVE_REG_READ_PROC
// implement spi register read mux
always @( spiRegAddr or slv_reg[0] or slv_reg[1] or slv_reg[2]
or slv_reg[3] or slv_reg[4] or slv_reg[5] or slv_reg[6] or slv_reg[7]
or slv_reg[8] or slv_reg[9] or slv_reg[10] or slv_reg[11] or slv_reg[12]
or slv_reg[13] or slv_reg[14] or slv_reg[15] ) begin
spiRegReadData_wreg <= slv_reg[spiRegAddr];
end
// ------------------------------------------------------------
// Example code to drive IP to Bus signals
// ------------------------------------------------------------
assign IP2Bus_AddrAck = slv_write_ack || slv_read_ack || (|mem_read) || (|mem_write);
assign IP2Bus_Data = (mem_read_prev[0] ? mosiMem_doutb : (
mem_read_prev[1] ? misoMem_doutb :
slv_ip2bus_data));
assign IP2Bus_WrAck = slv_write_ack || (|mem_write);
assign IP2Bus_RdAck = slv_read_ack || (|mem_read_prev);
assign IP2Bus_Error = 0;
endmodule
------------------------------------------------------------------------------
-- spiifc.vhd - entity/architecture pair
------------------------------------------------------------------------------
-- IMPORTANT:
-- DO NOT MODIFY THIS FILE EXCEPT IN THE DESIGNATED SECTIONS.
--
-- SEARCH FOR --USER TO DETERMINE WHERE CHANGES ARE ALLOWED.
--
-- TYPICALLY, THE ONLY ACCEPTABLE CHANGES INVOLVE ADDING NEW
-- PORTS AND GENERICS THAT GET PASSED THROUGH TO THE INSTANTIATION
-- OF THE USER_LOGIC ENTITY.
------------------------------------------------------------------------------
--
-- ***************************************************************************
-- ** Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved. **
-- ** **
-- ** Xilinx, Inc. **
-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" **
-- ** AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND **
-- ** SOLUTIONS FOR XILINX DEVICES. 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. **
-- ** **
-- ***************************************************************************
--
------------------------------------------------------------------------------
-- Filename: spiifc.vhd
-- Version: 1.00.a
-- Description: Top level design, instantiates library components and user logic.
-- Date: Tue Feb 28 11:11:15 2012 (by Create and Import Peripheral Wizard)
-- VHDL Standard: VHDL'93
------------------------------------------------------------------------------
-- Naming Conventions:
-- active low signals: "*_n"
-- clock signals: "clk", "clk_div#", "clk_#x"
-- reset signals: "rst", "rst_n"
-- generics: "C_*"
-- user defined types: "*_TYPE"
-- state machine next state: "*_ns"
-- state machine current state: "*_cs"
-- combinatorial signals: "*_com"
-- pipelined or register delay signals: "*_d#"
-- counter signals: "*cnt*"
-- clock enable signals: "*_ce"
-- internal version of output port: "*_i"
-- device pins: "*_pin"
-- ports: "- Names begin with Uppercase"
-- processes: "*_PROCESS"
-- component instantiations: "<ENTITY_>I_<#|FUNC>"
------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library proc_common_v3_00_a;
use proc_common_v3_00_a.proc_common_pkg.all;
use proc_common_v3_00_a.ipif_pkg.all;
library interrupt_control_v2_01_a;
use interrupt_control_v2_01_a.interrupt_control;
library plbv46_slave_burst_v1_01_a;
use plbv46_slave_burst_v1_01_a.plbv46_slave_burst;
------------------------------------------------------------------------------
-- Entity section
------------------------------------------------------------------------------
-- Definition of Generics:
-- C_BASEADDR -- PLBv46 slave: base address
-- C_HIGHADDR -- PLBv46 slave: high address
-- C_SPLB_AWIDTH -- PLBv46 slave: address bus width
-- C_SPLB_DWIDTH -- PLBv46 slave: data bus width
-- C_SPLB_NUM_MASTERS -- PLBv46 slave: Number of masters
-- C_SPLB_MID_WIDTH -- PLBv46 slave: master ID bus width
-- C_SPLB_NATIVE_DWIDTH -- PLBv46 slave: internal native data bus width
-- C_SPLB_P2P -- PLBv46 slave: point to point interconnect scheme
-- C_SPLB_SUPPORT_BURSTS -- PLBv46 slave: support bursts
-- C_SPLB_SMALLEST_MASTER -- PLBv46 slave: width of the smallest master
-- C_SPLB_CLK_PERIOD_PS -- PLBv46 slave: bus clock in picoseconds
-- C_INCLUDE_DPHASE_TIMER -- PLBv46 slave: Data Phase Timer configuration; 0 = exclude timer, 1 = include timer
-- C_FAMILY -- Xilinx FPGA family
-- C_MEM0_BASEADDR -- User memory space 0 base address
-- C_MEM0_HIGHADDR -- User memory space 0 high address
-- C_MEM1_BASEADDR -- User memory space 1 base address
-- C_MEM1_HIGHADDR -- User memory space 1 high address
--
-- Definition of Ports:
-- SPLB_Clk -- PLB main bus clock
-- SPLB_Rst -- PLB main bus reset
-- PLB_ABus -- PLB address bus
-- PLB_UABus -- PLB upper address bus
-- PLB_PAValid -- PLB primary address valid indicator
-- PLB_SAValid -- PLB secondary address valid indicator
-- PLB_rdPrim -- PLB secondary to primary read request indicator
-- PLB_wrPrim -- PLB secondary to primary write request indicator
-- PLB_masterID -- PLB current master identifier
-- PLB_abort -- PLB abort request indicator
-- PLB_busLock -- PLB bus lock
-- PLB_RNW -- PLB read/not write
-- PLB_BE -- PLB byte enables
-- PLB_MSize -- PLB master data bus size
-- PLB_size -- PLB transfer size
-- PLB_type -- PLB transfer type
-- PLB_lockErr -- PLB lock error indicator
-- PLB_wrDBus -- PLB write data bus
-- PLB_wrBurst -- PLB burst write transfer indicator
-- PLB_rdBurst -- PLB burst read transfer indicator
-- PLB_wrPendReq -- PLB write pending bus request indicator
-- PLB_rdPendReq -- PLB read pending bus request indicator
-- PLB_wrPendPri -- PLB write pending request priority
-- PLB_rdPendPri -- PLB read pending request priority
-- PLB_reqPri -- PLB current request priority
-- PLB_TAttribute -- PLB transfer attribute
-- Sl_addrAck -- Slave address acknowledge
-- Sl_SSize -- Slave data bus size
-- Sl_wait -- Slave wait indicator
-- Sl_rearbitrate -- Slave re-arbitrate bus indicator
-- Sl_wrDAck -- Slave write data acknowledge
-- Sl_wrComp -- Slave write transfer complete indicator
-- Sl_wrBTerm -- Slave terminate write burst transfer
-- Sl_rdDBus -- Slave read data bus
-- Sl_rdWdAddr -- Slave read word address
-- Sl_rdDAck -- Slave read data acknowledge
-- Sl_rdComp -- Slave read transfer complete indicator
-- Sl_rdBTerm -- Slave terminate read burst transfer
-- Sl_MBusy -- Slave busy indicator
-- Sl_MWrErr -- Slave write error indicator
-- Sl_MRdErr -- Slave read error indicator
-- Sl_MIRQ -- Slave interrupt indicator
-- IP2INTC_Irpt -- Interrupt output to processor
------------------------------------------------------------------------------
entity spiifc is
generic
(
-- ADD USER GENERICS BELOW THIS LINE ---------------
--USER generics added here
-- ADD USER GENERICS ABOVE THIS LINE ---------------
-- DO NOT EDIT BELOW THIS LINE ---------------------
-- Bus protocol parameters, do not add to or delete
C_BASEADDR : std_logic_vector := X"FFFFFFFF";
C_HIGHADDR : std_logic_vector := X"00000000";
C_SPLB_AWIDTH : integer := 32;
C_SPLB_DWIDTH : integer := 128;
C_SPLB_NUM_MASTERS : integer := 8;
C_SPLB_MID_WIDTH : integer := 3;
C_SPLB_NATIVE_DWIDTH : integer := 32;
C_SPLB_P2P : integer := 0;
C_SPLB_SUPPORT_BURSTS : integer := 1;
C_SPLB_SMALLEST_MASTER : integer := 32;
C_SPLB_CLK_PERIOD_PS : integer := 10000;
C_INCLUDE_DPHASE_TIMER : integer := 1;
C_FAMILY : string := "virtex6";
C_MEM0_BASEADDR : std_logic_vector := X"FFFFFFFF";
C_MEM0_HIGHADDR : std_logic_vector := X"00000000";
C_MEM1_BASEADDR : std_logic_vector := X"FFFFFFFF";
C_MEM1_HIGHADDR : std_logic_vector := X"00000000"
-- DO NOT EDIT ABOVE THIS LINE ---------------------
);
port
(
-- ADD USER PORTS BELOW THIS LINE ------------------
SPI_CLK : in std_logic;
SPI_MOSI : in std_logic;
SPI_MISO : out std_logic;
SPI_SS : in std_logic;
-- ADD USER PORTS ABOVE THIS LINE ------------------
-- DO NOT EDIT BELOW THIS LINE ---------------------
-- Bus protocol ports, do not add to or delete
SPLB_Clk : in std_logic;
SPLB_Rst : in std_logic;
PLB_ABus : in std_logic_vector(0 to 31);
PLB_UABus : in std_logic_vector(0 to 31);
PLB_PAValid : in std_logic;
PLB_SAValid : in std_logic;
PLB_rdPrim : in std_logic;
PLB_wrPrim : in std_logic;
PLB_masterID : in std_logic_vector(0 to C_SPLB_MID_WIDTH-1);
PLB_abort : in std_logic;
PLB_busLock : in std_logic;
PLB_RNW : in std_logic;
PLB_BE : in std_logic_vector(0 to C_SPLB_DWIDTH/8-1);
PLB_MSize : in std_logic_vector(0 to 1);
PLB_size : in std_logic_vector(0 to 3);
PLB_type : in std_logic_vector(0 to 2);
PLB_lockErr : in std_logic;
PLB_wrDBus : in std_logic_vector(0 to C_SPLB_DWIDTH-1);
PLB_wrBurst : in std_logic;
PLB_rdBurst : in std_logic;
PLB_wrPendReq : in std_logic;
PLB_rdPendReq : in std_logic;
PLB_wrPendPri : in std_logic_vector(0 to 1);
PLB_rdPendPri : in std_logic_vector(0 to 1);
PLB_reqPri : in std_logic_vector(0 to 1);
PLB_TAttribute : in std_logic_vector(0 to 15);
Sl_addrAck : out std_logic;
Sl_SSize : out std_logic_vector(0 to 1);
Sl_wait : out std_logic;
Sl_rearbitrate : out std_logic;
Sl_wrDAck : out std_logic;
Sl_wrComp : out std_logic;
Sl_wrBTerm : out std_logic;
Sl_rdDBus : out std_logic_vector(0 to C_SPLB_DWIDTH-1);
Sl_rdWdAddr : out std_logic_vector(0 to 3);
Sl_rdDAck : out std_logic;
Sl_rdComp : out std_logic;
Sl_rdBTerm : out std_logic;
Sl_MBusy : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
Sl_MWrErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
Sl_MRdErr : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
Sl_MIRQ : out std_logic_vector(0 to C_SPLB_NUM_MASTERS-1);
IP2INTC_Irpt : out std_logic
-- DO NOT EDIT ABOVE THIS LINE ---------------------
);
attribute MAX_FANOUT : string;
attribute SIGIS : string;
attribute SIGIS of SPLB_Clk : signal is "CLK";
attribute SIGIS of SPLB_Rst : signal is "RST";
attribute SIGIS of IP2INTC_Irpt : signal is "INTR_LEVEL_HIGH";
end entity spiifc;
------------------------------------------------------------------------------
-- Architecture section
------------------------------------------------------------------------------
architecture IMP of spiifc is
------------------------------------------
-- Array of base/high address pairs for each address range
------------------------------------------
constant ZERO_ADDR_PAD : std_logic_vector(0 to 31) := (others => '0');
constant USER_SLV_BASEADDR : std_logic_vector := C_BASEADDR or X"00000000";
constant USER_SLV_HIGHADDR : std_logic_vector := C_BASEADDR or X"000000FF";
constant INTR_BASEADDR : std_logic_vector := C_BASEADDR or X"00000100";
constant INTR_HIGHADDR : std_logic_vector := C_BASEADDR or X"000001FF";
constant IPIF_ARD_ADDR_RANGE_ARRAY : SLV64_ARRAY_TYPE :=
(
ZERO_ADDR_PAD & USER_SLV_BASEADDR, -- user logic slave space base address
ZERO_ADDR_PAD & USER_SLV_HIGHADDR, -- user logic slave space high address
ZERO_ADDR_PAD & INTR_BASEADDR, -- interrupt control space base address
ZERO_ADDR_PAD & INTR_HIGHADDR, -- interrupt control space high address
ZERO_ADDR_PAD & C_MEM0_BASEADDR, -- user logic memory space 0 base address
ZERO_ADDR_PAD & C_MEM0_HIGHADDR, -- user logic memory space 0 high address
ZERO_ADDR_PAD & C_MEM1_BASEADDR, -- user logic memory space 1 base address
ZERO_ADDR_PAD & C_MEM1_HIGHADDR -- user logic memory space 1 high address
);
------------------------------------------
-- Array of desired number of chip enables for each address range
------------------------------------------
constant USER_SLV_NUM_REG : integer := 16;
constant USER_NUM_REG : integer := USER_SLV_NUM_REG;
constant INTR_NUM_CE : integer := 16;
constant USER_NUM_MEM : integer := 2;
constant IPIF_ARD_NUM_CE_ARRAY : INTEGER_ARRAY_TYPE :=
(
0 => pad_power2(USER_SLV_NUM_REG), -- number of ce for user logic slave space
1 => INTR_NUM_CE, -- number of ce for interrupt control space
2 => 1, -- number of ce for user logic memory space 0 (always 1 chip enable)
3 => 1 -- number of ce for user logic memory space 1 (always 1 chip enable)
);
------------------------------------------
-- Cache line addressing mode (for cacheline read operations)
-- 0 = target word first on reads
-- 1 = line word first on reads
------------------------------------------
constant IPIF_CACHLINE_ADDR_MODE : integer := 0;
------------------------------------------
-- Number of storage locations for the write buffer
-- Valid depths are 0, 16, 32, or 64
-- 0 = no write buffer implemented
------------------------------------------
constant IPIF_WR_BUFFER_DEPTH : integer := 16;
------------------------------------------
-- The type out of the Bus2IP_BurstLength signal
-- 0 = length is in actual byte number
-- 1 = length is in data beats - 1
------------------------------------------
constant IPIF_BURSTLENGTH_TYPE : integer := 0;
------------------------------------------
-- Width of the slave data bus (32, 64, or 128)
------------------------------------------
constant USER_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
constant IPIF_SLV_DWIDTH : integer := C_SPLB_NATIVE_DWIDTH;
------------------------------------------
-- Number of device level interrupts
------------------------------------------
constant INTR_NUM_IPIF_IRPT_SRC : integer := 4;
------------------------------------------
-- Capture mode for each IP interrupt (generated by user logic)
-- 1 = pass through (non-inverting)
-- 2 = pass through (inverting)
-- 3 = registered level (non-inverting)
-- 4 = registered level (inverting)
-- 5 = positive edge detect
-- 6 = negative edge detect
------------------------------------------
constant USER_NUM_INTR : integer := 1;
constant USER_INTR_CAPTURE_MODE : integer := 1;
constant INTR_IP_INTR_MODE_ARRAY : INTEGER_ARRAY_TYPE :=
(
0 => USER_INTR_CAPTURE_MODE
);
------------------------------------------
-- Device priority encoder feature inclusion/omission
-- true = include priority encoder
-- false = omit priority encoder
------------------------------------------
constant INTR_INCLUDE_DEV_PENCODER : boolean := false;
------------------------------------------
-- Device ISC feature inclusion/omission
-- true = include device ISC
-- false = omit device ISC
------------------------------------------
constant INTR_INCLUDE_DEV_ISC : boolean := false;
------------------------------------------
-- Width of the slave address bus (32 only)
------------------------------------------
constant USER_SLV_AWIDTH : integer := C_SPLB_AWIDTH;
------------------------------------------
-- Index for CS/CE
------------------------------------------
constant USER_SLV_CS_INDEX : integer := 0;
constant USER_SLV_CE_INDEX : integer := calc_start_ce_index(IPIF_ARD_NUM_CE_ARRAY, USER_SLV_CS_INDEX);
constant INTR_CS_INDEX : integer := 1;
constant INTR_CE_INDEX : integer := calc_start_ce_index(IPIF_ARD_NUM_CE_ARRAY, INTR_CS_INDEX);
constant USER_MEM0_CS_INDEX : integer := 2;
constant USER_CS_INDEX : integer := USER_MEM0_CS_INDEX;
constant USER_CE_INDEX : integer := USER_SLV_CE_INDEX;
------------------------------------------
-- IP Interconnect (IPIC) signal declarations
------------------------------------------
signal ipif_Bus2IP_Clk : std_logic;
signal ipif_Bus2IP_Reset : std_logic;
signal ipif_IP2Bus_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
signal ipif_IP2Bus_WrAck : std_logic;
signal ipif_IP2Bus_RdAck : std_logic;
signal ipif_IP2Bus_AddrAck : std_logic;
signal ipif_IP2Bus_Error : std_logic;
signal ipif_Bus2IP_Addr : std_logic_vector(0 to C_SPLB_AWIDTH-1);
signal ipif_Bus2IP_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
signal ipif_Bus2IP_RNW : std_logic;
signal ipif_Bus2IP_BE : std_logic_vector(0 to IPIF_SLV_DWIDTH/8-1);
signal ipif_Bus2IP_Burst : std_logic;
signal ipif_Bus2IP_BurstLength : std_logic_vector(0 to log2(16*(C_SPLB_DWIDTH/8)));
signal ipif_Bus2IP_WrReq : std_logic;
signal ipif_Bus2IP_RdReq : std_logic;
signal ipif_Bus2IP_CS : std_logic_vector(0 to ((IPIF_ARD_ADDR_RANGE_ARRAY'length)/2)-1);
signal ipif_Bus2IP_RdCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
signal ipif_Bus2IP_WrCE : std_logic_vector(0 to calc_num_ce(IPIF_ARD_NUM_CE_ARRAY)-1);
signal intr_IPIF_Reg_Interrupts : std_logic_vector(0 to 1);
signal intr_IPIF_Lvl_Interrupts : std_logic_vector(0 to INTR_NUM_IPIF_IRPT_SRC-1);
signal intr_IP2Bus_Data : std_logic_vector(0 to IPIF_SLV_DWIDTH-1);
signal intr_IP2Bus_WrAck : std_logic;
signal intr_IP2Bus_RdAck : std_logic;
signal intr_IP2Bus_Error : std_logic;
signal user_Bus2IP_RdCE : std_logic_vector(0 to USER_NUM_REG-1);
signal user_Bus2IP_WrCE : std_logic_vector(0 to USER_NUM_REG-1);
signal user_Bus2IP_BurstLength : std_logic_vector(0 to 8) := (others => '0');
signal user_IP2Bus_AddrAck : std_logic;
signal user_IP2Bus_Data : std_logic_vector(0 to USER_SLV_DWIDTH-1);
signal user_IP2Bus_RdAck : std_logic;
signal user_IP2Bus_WrAck : std_logic;
signal user_IP2Bus_Error : std_logic;
signal user_IP2Bus_IntrEvent : std_logic_vector(0 to USER_NUM_INTR-1);
------------------------------------------
-- Component declaration for verilog user logic
------------------------------------------
component user_logic is
generic
(
-- ADD USER GENERICS BELOW THIS LINE ---------------
--USER generics added here
-- ADD USER GENERICS ABOVE THIS LINE ---------------
-- DO NOT EDIT BELOW THIS LINE ---------------------
-- Bus protocol parameters, do not add to or delete
C_SLV_AWIDTH : integer := 32;
C_SLV_DWIDTH : integer := 32;
C_NUM_REG : integer := 16;
C_NUM_MEM : integer := 2;
C_NUM_INTR : integer := 1
-- DO NOT EDIT ABOVE THIS LINE ---------------------
);
port
(
-- ADD USER PORTS BELOW THIS LINE ------------------
SPI_CLK : in std_logic;
SPI_MOSI : in std_logic;
SPI_MISO : out std_logic;
SPI_SS : in std_logic;
-- ADD USER PORTS ABOVE THIS LINE ------------------
-- DO NOT EDIT BELOW THIS LINE ---------------------
-- Bus protocol ports, do not add to or delete
Bus2IP_Clk : in std_logic;
Bus2IP_Reset : in std_logic;
Bus2IP_Addr : in std_logic_vector(0 to C_SLV_AWIDTH-1);
Bus2IP_CS : in std_logic_vector(0 to C_NUM_MEM-1);
Bus2IP_RNW : in std_logic;
Bus2IP_Data : in std_logic_vector(0 to C_SLV_DWIDTH-1);
Bus2IP_BE : in std_logic_vector(0 to C_SLV_DWIDTH/8-1);
Bus2IP_RdCE : in std_logic_vector(0 to C_NUM_REG-1);
Bus2IP_WrCE : in std_logic_vector(0 to C_NUM_REG-1);
Bus2IP_Burst : in std_logic;
Bus2IP_BurstLength : in std_logic_vector(0 to 8);
Bus2IP_RdReq : in std_logic;
Bus2IP_WrReq : in std_logic;
IP2Bus_AddrAck : out std_logic;
IP2Bus_Data : out std_logic_vector(0 to C_SLV_DWIDTH-1);
IP2Bus_RdAck : out std_logic;
IP2Bus_WrAck : out std_logic;
IP2Bus_Error : out std_logic;
IP2Bus_IntrEvent : out std_logic_vector(0 to C_NUM_INTR-1)
-- DO NOT EDIT ABOVE THIS LINE ---------------------
);
end component user_logic;
begin
------------------------------------------
-- instantiate plbv46_slave_burst
------------------------------------------
PLBV46_SLAVE_BURST_I : entity plbv46_slave_burst_v1_01_a.plbv46_slave_burst
generic map
(
C_ARD_ADDR_RANGE_ARRAY => IPIF_ARD_ADDR_RANGE_ARRAY,
C_ARD_NUM_CE_ARRAY => IPIF_ARD_NUM_CE_ARRAY,
C_SPLB_P2P => C_SPLB_P2P,
C_CACHLINE_ADDR_MODE => IPIF_CACHLINE_ADDR_MODE,
C_WR_BUFFER_DEPTH => IPIF_WR_BUFFER_DEPTH,
C_BURSTLENGTH_TYPE => IPIF_BURSTLENGTH_TYPE,
C_SPLB_MID_WIDTH => C_SPLB_MID_WIDTH,
C_SPLB_NUM_MASTERS => C_SPLB_NUM_MASTERS,
C_SPLB_SMALLEST_MASTER => C_SPLB_SMALLEST_MASTER,
C_SPLB_AWIDTH => C_SPLB_AWIDTH,
C_SPLB_DWIDTH => C_SPLB_DWIDTH,
C_SIPIF_DWIDTH => IPIF_SLV_DWIDTH,
C_INCLUDE_DPHASE_TIMER => C_INCLUDE_DPHASE_TIMER,
C_FAMILY => C_FAMILY
)
port map
(
SPLB_Clk => SPLB_Clk,
SPLB_Rst => SPLB_Rst,
PLB_ABus => PLB_ABus,
PLB_UABus => PLB_UABus,
PLB_PAValid => PLB_PAValid,
PLB_SAValid => PLB_SAValid,
PLB_rdPrim => PLB_rdPrim,
PLB_wrPrim => PLB_wrPrim,
PLB_masterID => PLB_masterID,
PLB_abort => PLB_abort,
PLB_busLock => PLB_busLock,
PLB_RNW => PLB_RNW,
PLB_BE => PLB_BE,
PLB_MSize => PLB_MSize,
PLB_size => PLB_size,
PLB_type => PLB_type,
PLB_lockErr => PLB_lockErr,
PLB_wrDBus => PLB_wrDBus,
PLB_wrBurst => PLB_wrBurst,
PLB_rdBurst => PLB_rdBurst,
PLB_wrPendReq => PLB_wrPendReq,
PLB_rdPendReq => PLB_rdPendReq,
PLB_wrPendPri => PLB_wrPendPri,
PLB_rdPendPri => PLB_rdPendPri,
PLB_reqPri => PLB_reqPri,
PLB_TAttribute => PLB_TAttribute,
Sl_addrAck => Sl_addrAck,
Sl_SSize => Sl_SSize,
Sl_wait => Sl_wait,
Sl_rearbitrate => Sl_rearbitrate,
Sl_wrDAck => Sl_wrDAck,
Sl_wrComp => Sl_wrComp,
Sl_wrBTerm => Sl_wrBTerm,
Sl_rdDBus => Sl_rdDBus,
Sl_rdWdAddr => Sl_rdWdAddr,
Sl_rdDAck => Sl_rdDAck,
Sl_rdComp => Sl_rdComp,
Sl_rdBTerm => Sl_rdBTerm,
Sl_MBusy => Sl_MBusy,
Sl_MWrErr => Sl_MWrErr,
Sl_MRdErr => Sl_MRdErr,
Sl_MIRQ => Sl_MIRQ,
Bus2IP_Clk => ipif_Bus2IP_Clk,
Bus2IP_Reset => ipif_Bus2IP_Reset,
IP2Bus_Data => ipif_IP2Bus_Data,
IP2Bus_WrAck => ipif_IP2Bus_WrAck,
IP2Bus_RdAck => ipif_IP2Bus_RdAck,
IP2Bus_AddrAck => ipif_IP2Bus_AddrAck,
IP2Bus_Error => ipif_IP2Bus_Error,
Bus2IP_Addr => ipif_Bus2IP_Addr,
Bus2IP_Data => ipif_Bus2IP_Data,
Bus2IP_RNW => ipif_Bus2IP_RNW,
Bus2IP_BE => ipif_Bus2IP_BE,
Bus2IP_Burst => ipif_Bus2IP_Burst,
Bus2IP_BurstLength => ipif_Bus2IP_BurstLength,
Bus2IP_WrReq => ipif_Bus2IP_WrReq,
Bus2IP_RdReq => ipif_Bus2IP_RdReq,
Bus2IP_CS => ipif_Bus2IP_CS,
Bus2IP_RdCE => ipif_Bus2IP_RdCE,
Bus2IP_WrCE => ipif_Bus2IP_WrCE
);
------------------------------------------
-- instantiate interrupt_control
------------------------------------------
INTERRUPT_CONTROL_I : entity interrupt_control_v2_01_a.interrupt_control
generic map
(
C_NUM_CE => INTR_NUM_CE,
C_NUM_IPIF_IRPT_SRC => INTR_NUM_IPIF_IRPT_SRC,
C_IP_INTR_MODE_ARRAY => INTR_IP_INTR_MODE_ARRAY,
C_INCLUDE_DEV_PENCODER => INTR_INCLUDE_DEV_PENCODER,
C_INCLUDE_DEV_ISC => INTR_INCLUDE_DEV_ISC,
C_IPIF_DWIDTH => IPIF_SLV_DWIDTH
)
port map
(
Bus2IP_Clk => ipif_Bus2IP_Clk,
Bus2IP_Reset => ipif_Bus2IP_Reset,
Bus2IP_Data => ipif_Bus2IP_Data,
Bus2IP_BE => ipif_Bus2IP_BE,
Interrupt_RdCE => ipif_Bus2IP_RdCE(INTR_CE_INDEX to INTR_CE_INDEX+INTR_NUM_CE-1),
Interrupt_WrCE => ipif_Bus2IP_WrCE(INTR_CE_INDEX to INTR_CE_INDEX+INTR_NUM_CE-1),
IPIF_Reg_Interrupts => intr_IPIF_Reg_Interrupts,
IPIF_Lvl_Interrupts => intr_IPIF_Lvl_Interrupts,
IP2Bus_IntrEvent => user_IP2Bus_IntrEvent,
Intr2Bus_DevIntr => IP2INTC_Irpt,
Intr2Bus_DBus => intr_IP2Bus_Data,
Intr2Bus_WrAck => intr_IP2Bus_WrAck,
Intr2Bus_RdAck => intr_IP2Bus_RdAck,
Intr2Bus_Error => intr_IP2Bus_Error,
Intr2Bus_Retry => open,
Intr2Bus_ToutSup => open
);
-- feed registered and level-pass-through interrupts into Device ISC if exists, otherwise ignored
intr_IPIF_Reg_Interrupts(0) <= '0';
intr_IPIF_Reg_Interrupts(1) <= '0';
intr_IPIF_Lvl_Interrupts(0) <= '0';
intr_IPIF_Lvl_Interrupts(1) <= '0';
intr_IPIF_Lvl_Interrupts(2) <= '0';
intr_IPIF_Lvl_Interrupts(3) <= '0';
------------------------------------------
-- instantiate User Logic
------------------------------------------
USER_LOGIC_I : component user_logic
generic map
(
-- MAP USER GENERICS BELOW THIS LINE ---------------
--USER generics mapped here
-- MAP USER GENERICS ABOVE THIS LINE ---------------
C_SLV_AWIDTH => USER_SLV_AWIDTH,
C_SLV_DWIDTH => USER_SLV_DWIDTH,
C_NUM_REG => USER_NUM_REG,
C_NUM_MEM => USER_NUM_MEM,
C_NUM_INTR => USER_NUM_INTR
)
port map
(
-- MAP USER PORTS BELOW THIS LINE ------------------
SPI_CLK => SPI_CLK,
SPI_MOSI => SPI_MOSI,
SPI_MISO => SPI_MISO,
SPI_SS => SPI_SS,
-- MAP USER PORTS ABOVE THIS LINE ------------------
Bus2IP_Clk => ipif_Bus2IP_Clk,
Bus2IP_Reset => ipif_Bus2IP_Reset,
Bus2IP_Addr => ipif_Bus2IP_Addr,
Bus2IP_CS => ipif_Bus2IP_CS(USER_CS_INDEX to USER_CS_INDEX+USER_NUM_MEM-1),
Bus2IP_RNW => ipif_Bus2IP_RNW,
Bus2IP_Data => ipif_Bus2IP_Data,
Bus2IP_BE => ipif_Bus2IP_BE,
Bus2IP_RdCE => user_Bus2IP_RdCE,
Bus2IP_WrCE => user_Bus2IP_WrCE,
Bus2IP_Burst => ipif_Bus2IP_Burst,
Bus2IP_BurstLength => user_Bus2IP_BurstLength,
Bus2IP_RdReq => ipif_Bus2IP_RdReq,
Bus2IP_WrReq => ipif_Bus2IP_WrReq,
IP2Bus_AddrAck => user_IP2Bus_AddrAck,
IP2Bus_Data => user_IP2Bus_Data,
IP2Bus_RdAck => user_IP2Bus_RdAck,
IP2Bus_WrAck => user_IP2Bus_WrAck,
IP2Bus_Error => user_IP2Bus_Error,
IP2Bus_IntrEvent => user_IP2Bus_IntrEvent
);
------------------------------------------
-- connect internal signals
------------------------------------------
IP2BUS_DATA_MUX_PROC : process( ipif_Bus2IP_CS, user_IP2Bus_Data, intr_IP2Bus_Data ) is
begin
case ipif_Bus2IP_CS is
when "1000" => ipif_IP2Bus_Data <= user_IP2Bus_Data;
when "0100" => ipif_IP2Bus_Data <= intr_IP2Bus_Data;
when "0010" => ipif_IP2Bus_Data <= user_IP2Bus_Data;
when "0001" => ipif_IP2Bus_Data <= user_IP2Bus_Data;
when others => ipif_IP2Bus_Data <= (others => '0');
end case;
end process IP2BUS_DATA_MUX_PROC;
ipif_IP2Bus_AddrAck <= ipif_Bus2IP_Burst and user_IP2Bus_AddrAck;
ipif_IP2Bus_WrAck <= user_IP2Bus_WrAck or intr_IP2Bus_WrAck;
ipif_IP2Bus_RdAck <= user_IP2Bus_RdAck or intr_IP2Bus_RdAck;
ipif_IP2Bus_Error <= user_IP2Bus_Error or intr_IP2Bus_Error;
user_Bus2IP_RdCE <= ipif_Bus2IP_RdCE(USER_CE_INDEX to USER_CE_INDEX+USER_NUM_REG-1);
user_Bus2IP_WrCE <= ipif_Bus2IP_WrCE(USER_CE_INDEX to USER_CE_INDEX+USER_NUM_REG-1);
user_Bus2IP_BurstLength(8-log2(16*(C_SPLB_DWIDTH/8)) to 8) <= ipif_Bus2IP_BurstLength;
end IMP;
XILINX-XDB 0.1 STUB 0.1 ASCII
XILINX-XDM V1.6e
$0dg44<,[o}e~g`n;"2*732(-80!<74012345678=:0<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;=>5>0;KMTPR=imnyn1750?37?44=AGZ^X7okdsc?54<768>0=94FNQWW>DBCZH6:?7>115920?OIX\^1MIJ]B=30>58682;1EC^ZT;ufe96=87;;7<4FNQWW>rce490;2<<4338JJUSS2MCJ0>?50?31?64=AGZ^X7JFB=12>586;2996D@_UU8gmkd;;80;2<=4338LQQVR\3NDM1=>:1<27>552F__\XZ5DN@?74<768?0??4@UURVP?bh}}h7?<4?>0380?OIX\^1HD^N<283:47<<3CE\XZ5DHRA86<768:087GAPTV9S@G;;3:5==5;:HLSQQ<PMK686=0>2:69KPRW]]0OC]O33;2=57=32F__\XZ5DNRA86<76l1=av;5bqd772*:8;047GAPTV9`lhf4>0;2<=48;MVPUSS2me~xl28:1<;?DBCZH6;245NDEPB846912KOH_O310<:?DBCZH6:>3l4AEFQE97429427LJKR@>27;><IMNYM1?18:CG@WG;:720MIJ]A=1=<>GCL[K78364AEFQE93902KOH_O36?:8EABUI5=546OKDSC?<;><IMNYM1718:CG@WD;8730MIJ]B=33:<=FLMXI0<?19:CG@WD;9;4i7LJKRC>27?6912KOH_L312<;?DBCZK6:255NDEPA878?3HNO^O2<>99B@ATE4=437LJKRC>6:==FLMXI0;07;@FGVG:0611JHI\M<9<;?DBCZK622>5NLM:8FPUXAGLD>6MJ139@L@ELWECHIC]J_U[SA1=DDB:=7NBD1925?FJL:>:>7NBD2Y:8GIM5P82;96MCK827?FJLI<1H@FO>7:AOOD7C:>1H@FO>D558GIMF9M2?7NBDB49@HND6=2IGGN?:;BNH@43<KEAOZn5LLJFU[AOQAMO>7NBDFY:8GIMAP82;56M@MLKWP@B6<2ID^HQHEOGQEQOHFVCEJB94CSGBP@Bd3MK_MRYFDUJ\Ef=CI]KT[DJ[H^@5?AOF494<7IGN<02=3>BNI5;:2:5KI@>26;1<L@K7=>08;EKB8429?2NBM1?:>69GMD:6>7=0HDO316<4?AOF4825;6JFA=3::3=CAH6:2:5KI@>14;1<L@K7><08;EKB8749?2NBM1<<>69GMD:5<7=0HDO324<4?AOF4;<5;6JFA=04:2=CAH694394DHC?6<813MCJ0?08;EKB866912NBM1=>:1<4?AOF4:;5:6JFA=1=2>BNI5>5:6JFA=7=2>BNI5<5:6JFA=5=2>BNI525:6JFA=;=2>BNJ5:5;6JFB=33:2=CAK6:=394DH@?57803MCI0<=17:FJF9736>1OEO2>5?58@LD;9?4<7IGM<05=3>BNJ5;32:5KIC>2=;0<L@H7=394DH@?65803MCI0??17:FJF9456>1OEO2=3?58@LD;:=4<7IGM<37=3>BNJ58=2:5KIC>13;1<L@H7>508;EKA87?9>2NBN1<17:FJF957601OEO2<1;2=3>BNJ59:2;5KIC>0:3=CAK6?2;5KIC>6:3=CAK6=2;5KIC>4:3=CAK632;5KIC>::2=CAYK7<394DHRB84803MC[M1<19:FJTD:4294<7IG_A=1=3>BNXK6;2:5KIQ@?5;1<L@ZI0?06;EKSF95=87=0HD^M<2<5?AIF494<7IAN<02=3>BHI5;:2:5KO@>26;1<LFK7=>08;EMB8429?2NDM1?:>69GKD:6>7=0HBO316<4?AIF4825;6J@A=3::3=CGH6:2:5KO@>14;1<LFK7><08;EMB8749?2NDM1<<>69GKD:5<7=0HBO324<4?AIF4;<5;6J@A=04:2=CGH694394DNC?6<813MEJ0?08;EMB866912NDM1=>:1<4?AIF4:;5:6J@A=1=2>BHI5>5:6J@A=7=2>BHI5<5:6J@A=5=2>BHI525:6J@A=;=3>BHIVXNK;5KOC>3:2=CGK6:<394DN@?54803MEI0<<17:FLF9746>1OCO2>4?58@JD;9<4<7IAM<04=3>BHJ5;<2:5KOC>2<;1<LFH7=409;EMA84803MEI0?>17:FLF9466>1OCO2=2?58@JD;::4<7IAM<36=3>BHJ58>2:5KOC>12;1<LFH7>:08;EMA87>9?2NDN1<6>79GKG:56>1OCO2<0?;8@JD;;80;2:5KOC>05;0<LFH7?384DN@?0;0<LFH79384DN@?2;0<LFH7;384DN@?<;0<LFH75394DN@\V@A03ME[M1>17:FLTD:66>1OC]O32?;8@JVF4:0;2:5KOQC?7;1<LFZI0=08;EMSF979?2ND\O2=>89GKUD;;3:5;6J@PC>0:6=BFH90ICLm;DL\VVRUIDUJn6KA_SQWVDKXJ<1MMA]J1:E0?BHC02CEEY^P01:8MKOSXV::46GAIUR\47><AGC_\R><8:KMMQVX8=20ECG[P^26<>OIA]ZT<;64IOKWTZ60?2CEEYQ?069JJLRX88=0ECG[_104?LHN\V:8;6GAIU]302=NF@^T<894IOKW[5003@DBXR>87:KMMQY70>1BBDZP0858MKOSW9K<7D@FT^2A3>OIA]U;O:5FNHV\4A1<AGC_S=K8;HLJPZ6A?2CEEYQ>069JJLRX98=0ECG[_004?LHN\V;8;6GAIU]202=NF@^T=894IOKW[4003@DBXR?87:KMMQY60>1BBDZP1858MKOSW8K<7D@FT^3A3>OIA]U:O:5FNHV\5A1<AGC_S<K8;HLJPZ7A?2CEEYQ=069JJLRX:8=0ECG[_304?LHN\V88;6GAIU]102=NF@^T>894IOKW[7003@DBXR<87:KMMQY50>1BBDZP2858MKOSW;K<7D@FT^0A3>OIA]U9O:5FNHV\6A1<AGC_S?K8;HLJPZ4A?2CEEYQ<069JJLRX;8=0ECG[_204?LHN\V98;6GAIU]002=NF@^T?894IOKW[6003@DBXR=87:KMMQY40>1BBDZP3858MKOSW:K<7D@FT^1A3>OIA]U8O:5FNHV\7A1<AGC_S>K8;HLJPZ5A>2CEEYQN6:KMMQYE12CEEYQIIMG5?IIFLLN=7AALKDF4?II@AJKGo6CnjnpUawunggi0Ad``rWgqwlii:2D:;6@JTVMQO1=IGGO37B 91yf\H1=WI[^j7]GA_CWPMA^e3YCESO[\N@OF2>VTLFDNm6\NMC35FRCU>2XNKNKN6:PFCFCE<2XXXL:4RRVA3>TT\]S[Ih5]SU]SVLIUA]STMh5]SU]SVLIUA]STN<?4SIPFCZC_\[KHXR@HCd9PLWC@WDCES^GUE018WLKXKFFGE^G@N^AKAFMf3ZCFSIKYIBG5?VIRZJO37^^NRUCM22=TZ_KGSL94SSTBHZD13Z^JXX];;R[MG1=SQYO<?6[?/yqw[gjlWdofSjkaescwkw)`fh~bzhlbg/lbplpbWkf`S`kb_fgm+sgkam$hy| r`ookjv\8T$ym` }/r4\jjoia}$ym`![RTG\@U(WZ@G:4#|nm618Q5){}Ui`fQbel]dakcui}ey#j`nthtffha)fh~bzhQmlj]nahY`mg%}magk.bqwv*tfeeed|V?R.scn*w)t>Vddecg{.scn+QTRMVN["]\FM0:-vdkd3\YN^RXFSH@OA<=QAL]TXT^J6:UFE969>2]NM1?16:UFE94902]NM1=50?48S@G;;7<0[HL30?48S@D;97<0[HL32?:8S@D;;3:5:6YJB=1=f>QUA]OTJD\\Tb9TVLRBWDEOIROl;VPJP@YJGMOTN<j4XHNJJ]+_LK*;"<.\TT@#4+7'IZIBE;5WSUNJF2=_[]ULBIl4X^ALV@YNFOE=7Ujm_Hfe?]boWYxba[k}shmm55=_ldUFmga}Vdppmjh682RoaRCfnnpUawungg90T~z<;Xgp<>gcl{k7<374aefqe9776k1jhi|n<0394;?<imnym1?>>99b`atf48437ljkr`>1:==flmxj0>07;`fgvd:3611jhi|n<4<;?dbczh6=255ndepb828?3hno~l27>99b`atf40437ljkrc>3:==flmxi0<07;`fgvg:5611jhi|m<2<;?dbczk6?255ndepa808?3hno~o29>99b`ate4>437ljkrc>;:d=flmxi044?>99b`ate404:46lck^ofiZabfVmnbh|fc^appw7?3kf`S`kb_fgm[utneV}bhyfP10:8fimXelgTkh`Ppskn[roc|aU9=i5mlj]nahY`mgU{~dcPwscst`tX{?U:=i5mlj]nahY`mgU{~dcPwscst`tX{?U9j6lck^ofiZabfV~d|<>4bmi\i`kXoldTz;Q=2b9ahnYjmdUlicQy6^0/$]okagr+OB\J Fgmawgsg{*:?#<>4:`ooZkbeVmnbRx9_3]{wq743kf`S`kb_hlsqqYedfi`=95mlj]nahYh}}z~xRlcobi:?gsanlxfi`:k8:`vbccuelg'naePmdo\c`hX~?U9 vmPaefqeZqnl}b6=?"l_`fgvgYpam~c1<>#c^cocjtn|ag6=!mPayk\maYpam~c19"l_`zj[vjf~lUu}k20-a\e}oX|pzn1<"l_c{waZunrl72 nQlololjZekc4;'oRjjf`wopZbf|h7; nQkircah`Ypi{dTnexPcnno95*dWmcxmobj_vcqjZdo~Vxjbjk20-a\aigeg{keb`Pdhp>G?)R{lxx#`dcynlp+riuczzjoh!ySQK,twimfh|$t}} pbmqav)tx`cmoRx>_12\e*bb~e%{~bdaaw-jtfiumVnb~"zbp.]`c**dWokfeaw2sqcqpdh1$jUcm~Qnxh]j`86+kVbjRkaa<3/gZnf{Voen0?#c^jbwZoiblii|20-a\lduXelgTcxzuu]qabuXi4:'oRfns^ofiZir|ySkhs^`>4)eX`hyTaxvPotvsqqYumnyTm0>#c^jbwZkrpVe~x}{{_sgdwZd:8%iTdl}Prde`ad;7$jUcm~Q}efaff86+kVbjR||t`?3(fYoizUyyl20-a\lduX{flinmPiorvpZtbozUj1="l_icp[via|lihSb{{ptv\v`atWk7; nQfnhv\bljbWgkfi0``_bmf[cokmVfdmikk,b]jjlrfWkg1="l_hljpgYqie7; nQfnugqbdebW}s{i0>#c^nleaYnf`~Tjdbj=1.`[hcjW}s{i0<#c^ov|ZvnxlfbbhQ|t`efw86+kVzye`Q{yqg>5)eXzlkoSikti]b916>>%iT~hok_egspmYe58:98!mPrdcg[roc|aUj15"l_sgb`Zqnl}bTn0==,b]qwqYwz`eyeywPa<AF(fYu{}U{~da}iu{\f8EB$jUyyQ{yqg>W\HD$jUyy|nm^c>4)eXzz~ym`Qm=1.`[vojWjeg`d}foo]`l`el5HFG nQzsd]a}qcXlk6<!mPurg\f|rbW~oi1="l_tqf[acai|fSio{a<2/gZstmVoho0>#c^wpaZuhn}oho0>#c^ufeZqnl}b6=!mPwd`\slbs`4;'oRy}iug\``vs`Vk68=79,b]tvlrbWmo{xeQm=0210)eX{ciRc`dd]b9RTN\LUME_][,b]tvlrbWdeoiRl2WSKWAZ@NZZ^'oRy}iug\slbs`Vk64!mPwskwaZqnl}bTn0==,b]{``pnklljadbv=rrbvqgi>t;o7o{ifdpnah*edbUfi`Qheo]u2Z4+st>0oaen4:aoog1<l`dj0=08;ekme979?2nbbl2=>69gmkg;;7=0hd`n<5<4?aoii5?5;6jfn`>5:<=cagk7;7>17:fjjd:06>1oecl30?:8`lhe48:546jfnc>25;><l`di0<<18:fjjg:6;720hd`m<06=<>bnfk6:9364dhla840902nbbo2>7?:8`lhe482546jfnc>2=;1<l`di0<07;ekmf947611oecl320<;?aoij589255kio`?668?3mcen1<;>99gmkd;:<437igab=05:==cagh7>:07;ekmf94?611oecl328<4?aoij58546jfnc>04;g<l`di0>?50?:8`lhe4:;5;6jfnc>0:2=cagh78394dhla80803mcen1817:fjjg:06>1oecl38?58`lhe40437iazt`>3:==cg|~j0<07;emvpd:5611ocxzn<2<;?air|h6?255kotvb808?3me~xl29>`9gkprf4>0;255kotvb828?3me~xo2?>89gkpre48:556j`uu`?548>3me~xo2>2?;8`jssj5;8245kotva842912ndyyl314<:?air|k6::374dnwwf970601ocxzm<0:==>bh}}h7=407;emvpg:6601ocxzm<32==>bh}}h7><06;emvpg:5:730hb{{b=00:<=cg|~i0?:19:flqqd;:<427iaztc>12;?<lfn1<8>89gkpre4;2556j`uu`?6<8?3me~xo2=>89gkpre4::5n6j`uu`?74<7601ocxzm<23=<>bh}}h7?364dnwwf92902ndyyl35?:8`jssj5<546j`uu`?3;><lfn1618:flqqd;1790ico<;dla<>h`kkb`i64wdc?4?69>2}nm1>18:uff96=87<0{hl30?CDu4dl2JKt<7k:G87>4}T=90:;54>46827665i=095l9:{o342?7<f8=<6;5+1669526<uZ>n6<97:064>4548;k?6?7n819P56`=9o21<7?<310b0?4>i120_9k51g:94?74;98j87<6a9;8`4?c290:6<u\51823=<6<>0:?>>=a581=d1b3^:954?:082>3b|[<:1=:6515595657:h>1>4o8e:&227<6<81]=:;52zw207<63|;??7>4}%37<?713k;2h7>56b80>3b|@8<:7)?:e;3:`>\4032p47;5168:>1<d2821j7s+16195<?<,:k1=4h4$5d95<c<,8?>6<5+146952?<a8lj6=4+15c95c?<f8>26=54i05g>5<#9=k1=:m4n06:>5=<a8=i6=4+15c952e<f8>26<54i0:5>5<#9=k1=:m4n06:>7=<a82>6=4+15c952e<f8>26>54i0:7>5<#9=k1=:m4n06:>1=<a8286=4+15c952e<f8>26854i0:1>5<#9=k1=:m4n06:>3=<a82:6=4+15c952e<f8>26:54i0:3>5<#9=k1=:m4n06:>==<a8=m6=4+15c952e<f8>26454i05f>5<#9=k1=:m4n06:>d=<a8=j6=4+15c952e<f8>26o54i0cb>5<#9=k1=l74n06:>5=<a8k36=4+15c95d?<f8>26<54i0c4>5<#9=k1=l74n06:>7=<a8k=6=4+15c95d?<f8>26>54i0c6>5<#9=k1=l74n06:>1=<a8k?6=4+15c95d?<f8>26854i0c0>5<#9=k1=l74n06:>3=<a8k96=4+15c95d?<f8>26:54i0d`>5<#9=k1=kl4n06:>5=<a83:6=4+15c95<6<f8>26=54i0:e>5<#9=k1=4>4n06:>4=<a82n6=4+15c95<6<f8>26?54i0:g>5<#9=k1=4>4n06:>6=<a82h6=4+15c95<6<f8>26954i0:a>5<#9=k1=4>4n06:>0=<a82j6=4+15c95<6<f8>26;54i0::>5<#9=k1=4>4n06:>2=<a8236=4+15c95<6<f8>26554i0:4>5<#9=k1=4>4n06:><=<a8i?6=4+15c95f5<f8>26=54i0a1>5<#9=k1=n=4n06:>4=<a8i;6=4+15c95f5<f8>26?54i0`e>5<#9=k1=n=4n06:>6=<a8hn6=4+15c95f5<f8>26954i0`g>5<#9=k1=n=4n06:>0=<a8hh6=4+15c95f5<f8>26;54i0`a>5<#9=k1=n=4n06:>2=<a8hj6=4+15c95f5<f8>26554i0`:>5<#9=k1=n=4n06:><=<a8h36=4+15c95f5<f8>26l54i0`4>5<#9=k1=n=4n06:>g=<a8h>6=4+15c95f5<f8>26n54i0`7>5<#9=k1=n=4n06:>a=<a8h86=4+15c95f5<f8>26h54i0`1>5<#9=k1=n=4n06:>c=<a8h:6=4+15c95f5<f8>26<>4;h3a4?6=,8>j6<m<;o37=?7632c:mk4?:%37e?7d;2d:844>2:9j5dc=83.:8l4>c29m51?=9:10e<ok:18'51g=9j90b<:6:068?l7fk3:1(<:n:0a0?k7313;>76g>cc83>!73i3;h?6`>48822>=n9jk1<7*>4`82g6=i9=31=:54i0a:>5<#9=k1=n=4n06:>4><3`;h47>5$06b>4e43g;?57?6;:k2g2<72-;?m7?l3:l20<<6i21b=n850;&20d<6k:1e=9751c98m4e2290/=9o51b18j42>28i07d?l1;29 42f28i87c?;9;3g?>o6j?0;6)?;a;3`7>h6<00:i65f1``94?"6<h0:o>5a15;95c=<a8k;6=44i0d5>5<<a8k:6=44i0d4>5<<g8n?6=4+15c95a5<f8>26=54o0f1>5<#9=k1=i=4n06:>4=<g8n:6=4+15c95a5<f8>26?54o0f3>5<#9=k1=i=4n06:>6=<g8im6=4+15c95a5<f8>26954o0af>5<#9=k1=i=4n06:>0=<g8io6=4+15c95a5<f8>26;54o0a`>5<#9=k1=i=4n06:>2=<g8on6=4+15c95`b<f8>26=54o0g`>5<#9=k1=hj4n06:>4=<g8oj6=4+15c95`b<f8>26?54o0g:>5<#9=k1=hj4n06:>6=<g8o36=4+15c95`b<f8>26954o0g4>5<#9=k1=hj4n06:>0=<g8o=6=4+15c95`b<f8>26;54o0g6>5<#9=k1=hj4n06:>2=<g8o?6=4+15c95`b<f8>26554o0g0>5<#9=k1=hj4n06:><=<g8o96=4+15c95`b<f8>26l54o0g2>5<#9=k1=hj4n06:>g=<g8nm6=4+15c95`b<f8>26n54o0ff>5<#9=k1=hj4n06:>a=<g8no6=4+15c95`b<f8>26h54o0f`>5<#9=k1=hj4n06:>c=<g8ni6=4+15c95`b<f8>26<>4;n3ge?6=,8>j6<kk;o37=?7632e:h44?:%37e?7bl2d:844>2:9l5a>=83.:8l4>ee9m51?=9:10c<j8:18'51g=9ln0b<:6:068?j7c>3:1(<:n:0gg?k7313;>76a>f483>!73i3;nh6`>48822>=h9o>1<7*>4`82aa=i9=31=:54o0d0>5<#9=k1=hj4n06:>4><3f;m>7>5$06b>4cc3g;?57?6;:m2b4<72-;?m7?jd:l20<<6i21d=k>50;&20d<6mm1e=9751c98k4ca290/=9o51df8j42>28i07b?jb;29 42f28oo7c?;9;3g?>i6m90;6)?;a;3f`>h6<00:i65`1e794?"6<h0:ii5a15;95c=<j8=96=4>:183!72m3l87E?81:J224=hn;0;66sm14d94?dd290;w)?:e;37g>N6?81C=;?4Z2:9g~0=?3;;6<:510821?752m0i6h4>3;c9yk362=1e9?4>2:l`4?6<fl81<6*jf;d2?!`72o;0(k:53:&e1?5<,o<1?6*i7;18 c>=;2.m57=4$gc97>"aj390(km53:&e`?5<,oo1?6*if;18 4672:1/==?53:&247<43-;;?7=4$027>6=#99?1?6*>0780?!77?390(<>7:29'55?=;2.:<l4<;%33f?5<,8:h6>5+11f97>"68l087)??f;18 4772:1/=<?53:&257<43-;:?7=4$037>6=#98?1?6*>1780?!76?390(<?7:29'54?=;2.:=l4<;%32f?5<,8;h6>5+10f97>"69l087)?>f;18 4472:1/=??53:&267<43-;9?7=4$007>6=#9;?1?6*>2780?!75?390(<<7:29'57?=;2.:>l4<;%31f?5<,88h6>5+13f97>"6:l087)?=f;18 4572:1/=>?53:&277<43-;8?7=4$017>6=#9:?1?6*>3780?!74?390(<=7:29'56?=;2.:?l4<;%30f?5<,89h6?5+12f96>"6;l0:8;5+143950b<,8?96>74$070>6?<,8?=6>94$074>43>3-;>m7<4$07a>7=#9?o1=;j4$04e>40c3`;?h7>5;h62>5<<alo1<75f14294?=n<?0;66g>4d83>>o6<o0;66gjd;29?l?>290/=9o5999m51?=821b5:4?:%37e???3g;?57?4;h;5>5<#9=k1555a15;96>=n1<0;6)?;a;;;?k7313907d?97;29 42f28<=7c?;9;28?l71=3:1(<:n:045?k7313;07d?94;29 42f28<=7c?;9;08?l71;3:1(<:n:045?k7313907bl7:18'51g=j>1e=9750:9lf3<72-;?m7l8;o37=?7<3fh?6=4+15c9f2=i9=31>65`b283>!73i3h<7c?;9;18?jd5290/=9o5b69m51?=<21dn<4?:%37e?d03g;?57;4;n`3>5<#9=k1n:5a15;92>=hio0;6)?;a;`4?k7313=07boj:18'51g=j>1e=9758:9lea<72-;?m7l8;o37=??<3fkh6=4+15c9f2=i9=31m65`ac83>!73i3h<7c?;9;`8?jg>290/=9o5b69m51?=k21dm54?:%37e?d03g;?57j4;nc4>5<#9=k1n:5a15;9a>=hi?0;6)?;a;`4?k7313l07bo::18'51g=j>1e=9751198kd2=83.:8l4m7:l20<<6921dm>4?:%37e?d03g;?57?=;:mb6?6=,8>j6o94n06:>45<3fk:6=4+15c9f2=i9=31=954o`294?"6<h0i;6`>48821>=hjo0;6)?;a;`4?k7313;=76ame;29 42f2k=0b<:6:058?jdc290/=9o5b69m51?=9110com50;&20d<e?2d:844>9:9lfg<72-;?m7l8;o37=?7f32eim7>5$06b>g1<f8>26<l4;n`:>5<#9=k1n:5a15;95f=<gk?1<7*>4`8a3>h6<00:h65`a`83>!73i3h<7c?;9;3f?>i>n3:1(<:n:c58j42>28l07d?j:18'51g=9m1e=9750:9j5f<72-;?m7?k;o37=?7<3`;i6=4+15c95a=i9=31>65f1`83>!73i3;o7c?;9;18?l40290/=9o51e9m51?=<21b>;4?:%37e?7c3g;?57;4;h06>5<#9=k1=i5a15;92>=n:=0;6)?;a;3g?k7313=07d<<:18'51g=9m1e=9758:9j67<72-;?m7?k;o37=??<3`8:6=4+15c95a=i9=31m65f2183>!73i3;o7c?;9;`8?l7a290/=9o51e9m51?=k21b=44?:%37e?7c3g;?57j4;h0g>5<#9=k1>n5a15;94>=n:k0;6)?;a;0`?k7313;07d<n:18'51g=:j1e=9752:9j6<<72-;?m7<l;o37=?5<3`9=6=4+15c96f=i9=31865f3483>!73i38h7c?;9;78?l53290/=9o52b9m51?=>21b?>4?:%37e?4d3g;?5794;h11>5<#9=k1>n5a15;9<>=n;80;6)?;a;0`?k7313307d=?:18'51g=:j1e=975a:9j6c<72-;?m7<l;o37=?d<3`8n6=4+15c96f=i9=31o65f2983>!73i38h7c?;9;f8?l>c290/=9o58b9m51?=821b4o4?:%37e?>d3g;?57?4;h::>5<#9=k14n5a15;96>=n010;6)?;a;:`?k7313907d68:18'51g=0j1e=9754:9j<3<72-;?m76l;o37=?3<3`2>6=4+15c9<f=i9=31:65f8583>!73i32h7c?;9;58?l>4290/=9o58b9m51?=021b4?4?:%37e?>d3g;?5774;h:2>5<#9=k14n5a15;9e>=n090;6)?;a;:`?k7313h07d9j:18'51g=0j1e=975c:9j3a<72-;?m76l;o37=?b<3`=h6=4+15c9<f=i9=31i65f7c83>!73i32h7c?;9;d8?l1f290/=9o58b9m51?=9910e:750;&20d<?k2d:844>1:9j3=<72-;?m76l;o37=?7532c<;7>5$06b>=e<f8>26<=4;h55>5<#9=k14n5a15;951=<a>?1<7*>4`8;g>h6<00:965f9583>!73i32h7c?;9;35?>o>;3:1(<:n:9a8j42>28=07d7=:18'51g=0j1e=9751998m<7=83.:8l47c:l20<<6121b5=4?:%37e?>d3g;?57?n;:k;b?6=,8>j65m4n06:>4d<3`2n6=4+15c9<f=i9=31=n54i9c94?"6<h03o6`>4882`>=n?o0;6)?;a;:`?k7313;n76g84;29 42f21i0b<:6:0d8?jc0290/=9o5e79m51?=821di84?:%37e?c13g;?57?4;ng7>5<#9=k1i;5a15;96>=hm:0;6)?;a;g5?k7313907d7j:18'51g=1m1e=9750:9j=f<72-;?m77k;o37=?7<3`3i6=4+15c9=a=i9=31>65f9`83>!73i33o7c?;9;18?jcd290/=9o5ec9m51?=821dil4?:%37e?ce3g;?57?4;ng:>5<#9=k1io5a15;96>=hm10;6)?;a;ga?k7313907bjn:18'51g=l01e=9750:9l`=<72-;?m7j6;o37=?7<3fn=6=4+15c9`<=i9=31>65`d483>!73i3n27c?;9;18?jb3290/=9o5d89m51?=<21dh>4?:%37e?b>3g;?57;4;nf1>5<#9=k1h45a15;92>=hl80;6)?;a;f:?k7313=07bj?:18'51g=l01e=9758:9lgc<72-;?m7j6;o37=??<3fin6=4+15c9`<=i9=31m65`ce83>!73i3n27c?;9;`8?jee290/=9o5d89m51?=k21dol4?:%37e?b>3g;?57j4;na:>5<#9=k1h45a15;9a>=hk10;6)?;a;f:?k7313l07bm8:18'51g=l01e=9751198kf0=83.:8l4k9:l20<<6921do84?:%37e?b>3g;?57?=;:m`0?6=,8>j6i74n06:>45<3fi86=4+15c9`<=i9=31=954ob094?"6<h0o56`>48821>=hm80;6)?;a;f:?k7313;=76aj0;29 42f2m30b<:6:058?jba290/=9o5d89m51?=9110cik50;&20d<c12d:844>9:9l`a<72-;?m7j6;o37=?7f32eoo7>5$06b>a?<f8>26<l4;nfa>5<#9=k1h45a15;95f=<gm=1<7*>4`8g=>h6<00:h65`cb83>!73i3n27c?;9;3f?>id93:1(<:n:e;8j42>28l07d?9c;29 42f28<i7c?;9;28?l71i3:1(<:n:04a?k7313;07d?99;29 42f28<i7c?;9;08?l7103:1(<:n:04a?k7313907d8l:18'51g=>k1e=9750:9j2d<72-;?m78m;o37=?7<3`<36=4+15c92g=i9=31>65f6683>!73i3<i7c?;9;18?l01290/=9o56c9m51?=<21b:84?:%37e?0e3g;?57;4;h47>5<#9=k1:o5a15;92>=n>:0;6)?;a;4a?k7313=07d8=:18'51g=>k1e=9758:9j24<72-;?m78m;o37=??<3`<;6=4+15c92g=i9=31m65f5g83>!73i3<i7c?;9;`8?l3c290/=9o56c9m51?=k21b9n4?:%37e?0e3g;?57j4;h7a>5<#9=k1:o5a15;9a>=n=h0;6)?;a;4a?k7313l07d;6:18'51g=>k1e=9751198m0>=83.:8l49b:l20<<6921b9:4?:%37e?0e3g;?57?=;:k62?6=,8>j6;l4n06:>45<3`?>6=4+15c92g=i9=31=954i4694?"6<h0=n6`>48821>=n?:0;6)?;a;4a?k7313;=76g82;29 42f2?h0b<:6:058?l16290/=9o56c9m51?=9110e:>50;&20d<1j2d:844>9:9j2c<72-;?m78m;o37=?7f32c=i7>5$06b>3d<f8>26<l4;h4g>5<#9=k1:o5a15;95f=<a?31<7*>4`85f>h6<00:h65f5d83>!73i3<i7c?;9;3f?>o2;3:1(<:n:7`8j42>28l07pl>6183>ge=83:p(<;j:06`?M7092B::<5U398`3<028:1=94>1;36>44=l3h1i7?<:`8~j07=<2d>>7?=;oa3>5=im;0;7)ki:g38 c6=n81/j94<;%d6>6=#n?087)h8:29'b=<43-l26>5+f`80?!`e2:1/jn4<;%dg>6=#nl087)hi:29'556=;2.:<<4<;%336?5<,8:86>5+11697>"68<087)??6;18 4602:1/==653:&24<<43-;;m7=4$02a>6=#99i1?6*>0e80?!77m390(<>i:29'546=;2.:=<4<;%326?5<,8;86>5+10697>"69<087)?>6;18 4702:1/=<653:&25<<43-;:m7=4$03a>6=#98i1?6*>1e80?!76m390(<?i:29'576=;2.:><4<;%316?5<,8886>5+13697>"6:<087)?=6;18 4402:1/=?653:&26<<43-;9m7=4$00a>6=#9;i1?6*>2e80?!75m390(<<i:29'566=;2.:?<4<;%306?5<,8986>5+12697>"6;<087)?<6;18 4502:1/=>653:&27<<43-;8m7=4$01a>6=#9:i1>6*>3e81?!74m3;?:6*>50821a=#9<81?45+14197<=#9<<1?:5+145950?<,8?j6?5+14`96>"6>l0::i5+17d953b<a8>o6=44i5394?=nml0;66g>5183>>o3>3:17d?;e;29?l73n3:17dkk:188m<?=83.:8l468:l20<<732c2;7>5$06b><><f8>26<54i8494?"6<h0246`>4881?>o>=3:1(<:n:8:8j42>2:10e<88:18'51g=9?<0b<:6:198m402290/=9o51748j42>2810e<8;:18'51g=9?<0b<:6:398m404290/=9o51748j42>2:10co650;&20d<e?2d:844?;:ma2?6=,8>j6o94n06:>4=<gk>1<7*>4`8a3>h6<00976am3;29 42f2k=0b<:6:298kg4=83.:8l4m7:l20<<332ei=7>5$06b>g1<f8>26854oc294?"6<h0i;6`>4885?>ifn3:1(<:n:c58j42>2>10clk50;&20d<e?2d:8447;:mb`?6=,8>j6o94n06:><=<ghi1<7*>4`8a3>h6<00j76anb;29 42f2k=0b<:6:c98kd?=83.:8l4m7:l20<<d32ej47>5$06b>g1<f8>26i54o`594?"6<h0i;6`>488f?>if>3:1(<:n:c58j42>2o10cl;50;&20d<e?2d:844>0:9le1<72-;?m7l8;o37=?7632ej?7>5$06b>g1<f8>26<<4;nc1>5<#9=k1n:5a15;956=<gh;1<7*>4`8a3>h6<00:865`a183>!73i3h<7c?;9;36?>ien3:1(<:n:c58j42>28<07blj:18'51g=j>1e=9751698kgb=83.:8l4m7:l20<<6021dnn4?:%37e?d03g;?57?6;:maf?6=,8>j6o94n06:>4g<3fhj6=4+15c9f2=i9=31=o54oc;94?"6<h0i;6`>4882g>=hj<0;6)?;a;`4?k7313;o76ana;29 42f2k=0b<:6:0g8?j?a290/=9o5b69m51?=9o10e<k50;&20d<6l2d:844?;:k2g?6=,8>j6<j4n06:>4=<a8h1<7*>4`82`>h6<00976g>a;29 42f28n0b<:6:298m71=83.:8l4>d:l20<<332c9:7>5$06b>4b<f8>26854i3794?"6<h0:h6`>4885?>o5<3:1(<:n:0f8j42>2>10e?=50;&20d<6l2d:8447;:k16?6=,8>j6<j4n06:><=<a;;1<7*>4`82`>h6<00j76g=0;29 42f28n0b<:6:c98m4`=83.:8l4>d:l20<<d32c:57>5$06b>4b<f8>26i54i3f94?"6<h09o6`>4883?>o5j3:1(<:n:3a8j42>2810e?o50;&20d<5k2d:844=;:k1=?6=,8>j6?m4n06:>6=<a:<1<7*>4`81g>h6<00?76g<5;29 42f2;i0b<:6:498m62=83.:8l4=c:l20<<132c8?7>5$06b>7e<f8>26:54i2094?"6<h09o6`>488;?>o493:1(<:n:3a8j42>2010e>>50;&20d<5k2d:844n;:k1b?6=,8>j6?m4n06:>g=<a;o1<7*>4`81g>h6<00h76g=8;29 42f2;i0b<:6:e98m=b=83.:8l47c:l20<<732c3n7>5$06b>=e<f8>26<54i9;94?"6<h03o6`>4881?>o?03:1(<:n:9a8j42>2:10e5950;&20d<?k2d:844;;:k;2?6=,8>j65m4n06:>0=<a1?1<7*>4`8;g>h6<00=76g74;29 42f21i0b<:6:698m=5=83.:8l47c:l20<<?32c3>7>5$06b>=e<f8>26454i9394?"6<h03o6`>488b?>o?83:1(<:n:9a8j42>2k10e:k50;&20d<?k2d:844l;:k4`?6=,8>j65m4n06:>a=<a>i1<7*>4`8;g>h6<00n76g8b;29 42f21i0b<:6:g98m2g=83.:8l47c:l20<<6821b;44?:%37e?>d3g;?57?>;:k4<?6=,8>j65m4n06:>44<3`=<6=4+15c9<f=i9=31=>54i6494?"6<h03o6`>48820>=n?<0;6)?;a;:`?k7313;>76g64;29 42f21i0b<:6:048?l?4290/=9o58b9m51?=9>10e4<50;&20d<?k2d:844>8:9j=4<72-;?m76l;o37=?7>32c2<7>5$06b>=e<f8>26<o4;h:e>5<#9=k14n5a15;95g=<a1o1<7*>4`8;g>h6<00:o65f8`83>!73i32h7c?;9;3g?>o0n3:1(<:n:9a8j42>28o07d9;:18'51g=0j1e=9751g98k`1=83.:8l4j6:l20<<732en97>5$06b>`0<f8>26<54od694?"6<h0n:6`>4881?>ib;3:1(<:n:d48j42>2:10e4k50;&20d<>l2d:844?;:k:g?6=,8>j64j4n06:>4=<a0h1<7*>4`8:`>h6<00976g6a;29 42f20n0b<:6:298k`e=83.:8l4jb:l20<<732enm7>5$06b>`d<f8>26<54od;94?"6<h0nn6`>4881?>ib03:1(<:n:d`8j42>2:10cio50;&20d<c12d:844?;:mg<?6=,8>j6i74n06:>4=<gm<1<7*>4`8g=>h6<00976ak5;29 42f2m30b<:6:298ka2=83.:8l4k9:l20<<332eo?7>5$06b>a?<f8>26854oe094?"6<h0o56`>4885?>ic93:1(<:n:e;8j42>2>10ci>50;&20d<c12d:8447;:m`b?6=,8>j6i74n06:><=<gjo1<7*>4`8g=>h6<00j76ald;29 42f2m30b<:6:c98kfd=83.:8l4k9:l20<<d32ehm7>5$06b>a?<f8>26i54ob;94?"6<h0o56`>488f?>id03:1(<:n:e;8j42>2o10cn950;&20d<c12d:844>0:9lg3<72-;?m7j6;o37=?7632eh97>5$06b>a?<f8>26<<4;na7>5<#9=k1h45a15;956=<gj91<7*>4`8g=>h6<00:865`c383>!73i3n27c?;9;36?>ib93:1(<:n:e;8j42>28<07bk?:18'51g=l01e=9751698ka`=83.:8l4k9:l20<<6021dhh4?:%37e?b>3g;?57?6;:mg`?6=,8>j6i74n06:>4g<3fnh6=4+15c9`<=i9=31=o54oe`94?"6<h0o56`>4882g>=hl>0;6)?;a;f:?k7313;o76alc;29 42f2m30b<:6:0g8?je6290/=9o5d89m51?=9o10e<8l:18'51g=9?h0b<:6:198m40f290/=9o517`8j42>2810e<86:18'51g=9?h0b<:6:398m40?290/=9o517`8j42>2:10e;m50;&20d<1j2d:844?;:k5e?6=,8>j6;l4n06:>4=<a?21<7*>4`85f>h6<00976g97;29 42f2?h0b<:6:298m30=83.:8l49b:l20<<332c=97>5$06b>3d<f8>26854i7694?"6<h0=n6`>4885?>o1;3:1(<:n:7`8j42>2>10e;<50;&20d<1j2d:8447;:k55?6=,8>j6;l4n06:><=<a?:1<7*>4`85f>h6<00j76g:f;29 42f2?h0b<:6:c98m0b=83.:8l49b:l20<<d32c>o7>5$06b>3d<f8>26i54i4`94?"6<h0=n6`>488f?>o2i3:1(<:n:7`8j42>2o10e8750;&20d<1j2d:844>0:9j1=<72-;?m78m;o37=?7632c>;7>5$06b>3d<f8>26<<4;h75>5<#9=k1:o5a15;956=<a<?1<7*>4`85f>h6<00:865f5583>!73i3<i7c?;9;36?>o0;3:1(<:n:7`8j42>28<07d9=:18'51g=>k1e=9751698m27=83.:8l49b:l20<<6021b;=4?:%37e?0e3g;?57?6;:k5b?6=,8>j6;l4n06:>4g<3`<n6=4+15c92g=i9=31=o54i7f94?"6<h0=n6`>4882g>=n>00;6)?;a;4a?k7313;o76g:e;29 42f2?h0b<:6:0g8?l34290/=9o56c9m51?=9o10q~?;4;293a}:9>81j?5214d95c=:9<l1=45214d975=:9<l1>k5214d96`=:9<l1>55214d92f=:9<l1:l5214d92==:9<l1::5214d923=:9<l1:85214d921=:9<l1:>5214d927=:9<l1:<5214d925=:9<l19k5214d91a=:9<l19n5214d91g=:9<l19l5214d91<=:9<l1955214d912=:9<l19;5214d910=:9<l1995214d936=:9<l1;?5214d934=:9<l1;=5214d92c=:9<l1:h5214d9<a=:9<l14o5214d9<<=:9<l1455214d9<2=:9<l14;5214d9<0=:9<l1495214d9<6=:9<l14?5214d9<4=:9<l14=5214d93`=:9<l1;i5214d93f=:9<l1;o5214d9=<=:9<l15:5214d9=3=:9<l1585214d9=`=:9<l15n5214d9=g=:9<l15l5214d951b<58?m6<:j;<36b?73n27:9k4>519>536=9o16=;>5189>536=;916=;>52g9>536=:l16=;>5299>536=>j16=;>56`9>536=>116=;>5669>536=>?16=;>5649>536=>=16=;>5629>536=>;16=;>5609>536=>916=;>55g9>536==m16=;>55b9>536==k16=;>55`9>536==016=;>5599>536==>16=;>5579>536==<16=;>5559>536=?:16=;>5739>536=?816=;>5719>536=>o16=;>56d9>536=0m16=;>58c9>536=0016=;>5899>536=0>16=;>5879>536=0<16=;>5859>536=0:16=;>5839>536=0816=;>5819>536=?l16=;>57e9>536=?j16=;>57c9>536=1016=;>5969>536=1?16=;>5949>536=1l16=;>59b9>536=1k16=;>59`9>536=9=n01<8?:06f?87183;?j63>618215=z{8n>6=4={_3g1>;6=o0h=6s|1d294?4|V8o;70?:f;a`?xu6mk0;6?uQ1d`8943a2m=0q~?jf;296~X6mo16=8h5dc9~w4`72909wS?i0:?225<d92wx=k?50;0xZ4`634;=<7ml;|q2b7<72;qU=k<4=043>a1<uz;m?7>52z\2b6=:9?:1ho5rs0d7>5<5sW;m863>5g8gg>{t9o?1<7<t^0d6?872n3no7p}>d783>7}Y9m<01<;i:eg8yv7c?3:1>vP>d69>50`=lo1v<j7:181[7c027::=4kc:p5a?=838pR<j6;<354?bc3ty:hl4?:3y]5ag<58<;6ik4}r3gf?6=:rT:ho521729`c=z{8nh6=4={_3gg>;6=o0n<6s|1ef94?4|V8no70?:f;g2?xu6ll0;6?uQ1eg8943a2j80q~?kf;296~X6lo16=8h5c29~w4c62909wS?j1:?225<b82wx=h<50;0xZ4c534;=<7k>;|q2a6<72;qU=h=4=043>f4<uz;n87>52z\2a1=:9?:1o>5rs0g6>5<5sW;n963>5g8`0>{t9l<1<7<t^0g5?872n3i>7p}>e683>7}Y9l=01<;i:b48yv7b03:1>vP>e99>50`=k>1v<k6:181[7b127::=4l4:p5`g=838pR<kn;<354?e23ty:in4?:3y]5`e<58<;6n84}r3fa?6=:rT:ih521729g2=z{8ih6=4={_3`g>;6=o02j6s|1bf94?4|V8io70?:f;cb?xu6kl0;6?uQ1bg8943a2k?0q~?lf;296~X6ko16=8h5b89~w4b72909wS?k0:?225<>n2wx=i?50;0xZ4b634;=<7on;|q2`7<72;qU=i<4=043>g3<uz;o87>52z\2`1=:9?:1n45rs0d4>5<4sW;m;63>5g8fa>;6>90ni6s|1`394?5|V8k:70?:f;65?87183>=7p}>f783>6}Y9o<01<;i:df894072ln0q~?n0;297~X6i916=8h5409>536=<81v<om:181[7fj27:9k484:p5g0=838pR<l9;<36b?1a3ty:o<4?:3y]5f7<58?m65o4}r3`1?6=:rT:o85214d9<`=z{8i=6=4={_3`2>;6>90<86s|1b594?4|V8i<70?90;5e?xu6k10;6?uQ1b:8940721k0q~?l9;296~X6k016=;>58d9~w4ef2909wS?la:?21c<?n2wx=nl50;0xZ4ee34;>j77?;|q2ef<72;qU=lm4=07e><7<uz;jh7>52z\2ea=:9<l15?5rs0cf>5<5sW;ji63>618;b>{t9hl1<7<t^0ce?871833;7p}>b183>7}Y9k:01<8?:838yv7e93:1>vP>b09>536=1;1v<l=:181[7e:27:9k463:p5g5=838pR<l<;<36b??33ty:n94?:3y]5g2<58?m6:;4}r3a1?6=:rT:n85214d933=z{8h<6=4={_3a3>;6>902?6s|1c:94?4|V8h370?90;;7?xu6j00;6?uQ1c;894072>?0q~?ma;296~X6jh16=;>5779~w4de2909wS?mb:?21c<0?2wx=om50;0xZ4dd34;>j797;|q2fa<72;qU=oj4=07e>2?<uz;ii7>52z\2f`=:9<l1;l5rs0`e>5<5sW;ij63>61843>{t9j:1<7<t^0a3?87183=37p}>c383>7}Y9j801<8?:6;8yv7d<3:1>vP>c59>536=?h1v<68:180[7??27:9k4<1:?225<492wx=5650;1xZ4>?34;>j7==;<354?553ty:444?:2y]5=?<58?m6>=4=043>65<uz;3m7>53z\2<d=:9<l1?952172971=z{82i6=4<{_3;f>;6=o08963>61801>{t91i1<7=t^0:`?872n39=70?90;15?xu60m0;6>uQ19f8943a2;301<8?:3;8yv7?m3:1?vP>8d9>50`=:h16=;>52`9~w4>a2908wS?7f:?21c<5j27::=4=b:p5<7=839pR<7>;<36b?4c34;=<7<k;|q2bf<720qU=km4=07e>40d34;>j7?9a:?21c<6>016=8h517:8940728<h70?90;35e>;6>90::452172953><uz;j>7>52z\2e7=:9<l19>5rs0c0>5<5sW;j?63>5g86a>{t9h>1<7<t^0c7?872n3<27p}>a483>7}Y9h?01<;i:7f8yv7f>3:1>vP>a79>536==:1v<o8:181[7f?27::=4:e:p5d>=838pR<o7;<354?0>3ty:ml4?:3y]5dg<58<;6;j4}r34e?6=;rT:;l5214d965=:9?:1>=5rs05f>5<4sW;<i63>5g815>;6>909=6s|16d94?5|V8=m70?:f;01?87183897p}>8183>6}Y91:01<;i:31894072;90q~?71;297~X60816=8h5259>536=:=1v<6=:180[7?:27:9k4=5:?225<5=2wx=5=50;1xZ4>434;>j7<9;<354?413ty:494?:2y]5=2<58?m6?94=043>71<uz;397>53z\2<0=:9<l1=l5217295d=z{82=6=4<{_3;2>;6=o0:n63>6182f>{t9>h1<7=t^05a?872n3;h70?90;3`?xu6?m0;6>uQ16f8943a28o01<8?:0g8yv7ai3:15vP>f`9>50`=9?=01<;i:046?872n3;=863>5g8226=:9?:1=;94=043>40234;=<7?94:?225<6>:1vqc?i3;295~N6>81vb<h;:182M7192we=k;50;3xL4063td:j;4?:0yK537<ug;m;7>51zJ224=zf8l36=4>{I355>{i9o31<7?tH042?xh6nh0;6<uG1738yk7aj3:1=vF>609~j4`d290:wE?91:m5cb=83;pD<8>;|l2b`<728qC=;?4}o3eb?6=9rB::<5rn323>5<6sA;==6sa21394?7|@8<:7p`=0383>4}O9?;0qc<?3;295~N6>81vb?>;:182M7192we>=;50;3xL4063td9<;4?:0yK537<ug8;;7>51zJ224=zf;:36=4>{I355>{i:931<7?tH042?xh58h0;6<uG1738yk47j3:1=vF>609~j76d290:wE?91:m65b=83;pD<8>;|l14`<728qC=;?4}o03b?6=9rB::<5rn333>5<6sA;==6sa20394?7|@8<:7p`=1383>4}O9?;0qc<>3;295~N6>81vb??;:182M7192we><;50;3xL4063td9=;4?:0yK537<ug8:;7>51zJ224=zf;;36=4>{I355>{i:831<7?tH042?xh59h0;6<uG1738yk46j3:1=vF>609~j77d290:wE?91:m64b=83;pD<8>;|l15`<728qC=;?4}o02b?6=9rB::<5rn303>5<6sA;==6sa23394?7|@8<:7p`=2383>4}O9?;0qc<=3;295~N6>81vb?<;:182M7192we>?;50;3xL4063td9>;4?:0yK537<ug89;7>51zJ224=zf;836=4>{I355>{i:;31<7?tH042?xh5:h0;6<uG1738yk45j3:1=vF>609~j74d290:wE?91:m67b=83;pD<8>;|l16`<728qC=;?4}o01b?6=9rB::<5rn313>5<6sA;==6sa22394?7|@8<:7p`=3383>4}O9?;0qc<<3;295~N6>81vb?=;:182M7192we>>;50;3xL4063td9?;4?:0yK537<ug88;7>51zJ224=zf;936=4>{I355>{i::31<7?tH042?xh5;h0;6<uG1738yk44j3:1=vF>609~j75d290:wE?91:m66b=83;pD<8>;|l17`<728qC=;?4}o00b?6=9rB::<5rn363>5<6sA;==6sa25394?7|@8<:7p`=4383>4}O9?;0qc<;3;295~N6>81vb?:;:182M7192we>9;50;3xL4063td98;4?:0yK537<ug8?;7>51zJ224=zf;>36=4>{I355>{i:=31<7?tH042?xh5<h0;6<uG1738yk43j3:1=vF>609~j72d290:wE?91:m61b=83;pD<8>;|l10`<728qC=;?4}o07b?6=9rB::<5rn373>5<6sA;==6sa24394?7|@8<:7p`=5383>4}O9?;0qc<:3;295~N6>81vb?;;:182M7192we>8;50;3xL4063td99;4?:0yK537<ug8>;7>51zJ224=zf;?36=4>{I355>{i:<31<7?tH042?xh5=h0;6<uG1738yk42j3:1=vF>609~j73d290:wE?91:m60b=83;pD<8>;|l11`<728qC=;?4}o06b?6=9rB::<5r}|CDF}5km0>on779d5~DED|8tJK\vsO@
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
-p
xc6slx45csg324-2
-lang
vhdl
-msg
__xps/ise/xmsgprops.lst
system.mhs
トョメtヲハ隰ハ蓙メ゙ワ@Dbb\b\`bDv(トョメtヲハ閼゙ツ菠@D惟ホメリハワ錺@DりリD@Dv.トョメtェ猜ツ靆ツ菠@Dう暢恰ィェ、灰@D赳ツ蒻ツワlDv-トョメtェ猜ツ靆ツ菠@Dャ中汗ヲ超灰@Dl齎jDv'トョメtェ猜ツ靆ツ菠@Df魔至D@Dニ賽fdhDv'トョメtェ猜ツ靆ツ菠@D、ヲィセ椈う暢イD@D`Dv&トョメtェ猜ツ靆ツ菠@Dヲ滑、h灰@DZdDv)トョメtヲハ隕靆レ@Dレトセ獵トセレ獺ニD@Db\``\ツDv;トョメtェ猜ツ靆ヲ靆レ@D━ヲセ研瓦D@Dll\llllllD@Dレメニ葯トリツセ`Dv<トョメtェ猜ツ靆ヲ靆レ@D明研瓦D@Db``\``````D@Dレメニ葯トリツセ`Dv<トョメtェ猜ツ靆ヲ靆レ@D、梟セ研瓦D@Dll\llllllD@Dレメニ葯トリツセ`Dvトョメtヲハ陞琲ヲ靜DDv@トョメtなネ葯ニハ跏゙隋Dレメニ葯トリツセ`D@D囃桷エ灰@Dレメニ葯トリツセ`Dv:トョメtェ猜ツ靆レ玻ワハワ錙Dレメニ葯トリツセ`D@D灰@D悚@灰v9トョメtェ猜ツ靆レ玻ワハワ錙Dレメニ葯トリツセ`D@D明凋ヲィD@DホニリヨDvLトョメtェ猜ツ靆レ玻ワハワ錙Dレメニ葯トリツセ`D@D━疾柱D@D權Zメ漾整@位ト@壜ネハDv>トョメtェ猜ツ靆レ玻ワハワ錙Dレメニ葯トリツセ`D@Dт、z@ヲ超灰@DljjflDv4トョメtェ猜ツ靆レ玻ワハワ錙Dレメニ葯トリツセ`D@D噪@権ェD@D`DvEトョメtなネハ萪獎ハ萃リ@Dセヲ霹ミハ貔p韆D@D貔ホ默゙D@Dレメニ葯トリツセ`DvGトョメtェ猜ツ靆レ玻ワハワ錙Dセヲ霹ミハ貔p韆D@D疾ェヲ汗凋ィ侃、ェィD@D撃丿灰v=トョメtなネハ萪獎ハ萃リ@D域セp韆D@D貔ホ默゙D@Dレメニ葯トリツセ`Dv?トョメtェ猜ツ靆レ玻ワハワ錙D域セp韆D@D疾ェヲ汗凋ィ侃、ェィD@D撃丿灰vEトョメtなネハ萪獎ハ萃リ@Dミセ韋゙ワ貔j韆D@D貔ホ默゙D@Dレメニ葯トリツセ`DvGトョメtェ猜ツ靆レ玻ワハワ錙Dミセ韋゙ワ貔j韆D@D疾ェヲ汗凋ィ侃、ェィD@D撃丿灰vFトョメtなネハ萪獎ハ萃リ@Dネリレトセニワ靼腑@Dリレトセト萃レセメフセニワ靼腑@Dレメニ葯トリツセ`DvFトョメtなネハ萪獎ハ萃リ@Dメリレトセニワ靼腑@Dリレトセト萃レセメフセニワ靼腑@Dレメニ葯トリツセ`Dv
\ No newline at end of file
#################################################################
# Makefile generated by Xilinx Platform Studio
# Project:C:\Users\mjlyons\workspace\vSPI\projnav\xps\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:\Users\mjlyons\workspace\vSPI\projnav\xps\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)
IF NOT EXIST "$(BOOTLOOP_DIR)" @mkdir "$(BOOTLOOP_DIR)"
cp -f $(MICROBLAZE_BOOTLOOP) $(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)
$(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 ""
# ##############################################################################
# Created by Base System Builder Wizard for Xilinx EDK 13.2 Build EDK_O.61xd
# Tue Feb 28 10:59:35 2012
# Target Board: Digilent Atlys Rev C
# Family: spartan6
# Device: xc6slx45
# Package: csg324
# Speed Grade: -2
# Processor number: 1
# Processor 1: microblaze_0
# System clock frequency: 66.7
# Debug Interface: On-Chip HW Debug Module
# ##############################################################################
PARAMETER VERSION = 2.1.0
PORT fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin = fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin, DIR = I, VEC = [0:7]
PORT fpga_0_LEDs_8Bits_GPIO_IO_O_pin = fpga_0_LEDs_8Bits_GPIO_IO_O_pin, DIR = O, VEC = [0:7]
PORT fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin = fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin, DIR = I, VEC = [0:4]
PORT fpga_0_clk_1_sys_clk_pin = CLK_S, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000
PORT fpga_0_rst_1_sys_rst_pin = sys_rst_s, DIR = I, SIGIS = RST, RST_POLARITY = 0
PORT spiifc_0_SPI_CLK_pin = spiifc_0_SPI_CLK, DIR = I, SIGIS = CLK, CLK_FREQ = 50000000
PORT spiifc_0_SPI_MISO_pin = spiifc_0_SPI_MISO, DIR = O
PORT spiifc_0_SPI_MOSI_pin = spiifc_0_SPI_MOSI, DIR = I
PORT spiifc_0_SPI_SS_pin = spiifc_0_SPI_SS, DIR = I
BEGIN microblaze
PARAMETER INSTANCE = microblaze_0
PARAMETER C_USE_BARREL = 1
PARAMETER C_DEBUG_ENABLED = 1
PARAMETER HW_VER = 8.20.a
BUS_INTERFACE DLMB = dlmb
BUS_INTERFACE ILMB = ilmb
BUS_INTERFACE DPLB = mb_plb
BUS_INTERFACE IPLB = mb_plb
BUS_INTERFACE DEBUG = microblaze_0_mdm_bus
PORT MB_RESET = mb_reset
END
BEGIN plb_v46
PARAMETER INSTANCE = mb_plb
PARAMETER HW_VER = 1.05.a
PORT PLB_Clk = clk_66_6667MHz
PORT SYS_Rst = sys_bus_reset
END
BEGIN lmb_v10
PARAMETER INSTANCE = ilmb
PARAMETER HW_VER = 2.00.b
PORT LMB_Clk = clk_66_6667MHz
PORT SYS_Rst = sys_bus_reset
END
BEGIN lmb_v10
PARAMETER INSTANCE = dlmb
PARAMETER HW_VER = 2.00.b
PORT LMB_Clk = clk_66_6667MHz
PORT SYS_Rst = sys_bus_reset
END
BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = dlmb_cntlr
PARAMETER HW_VER = 3.00.b
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x0000ffff
BUS_INTERFACE SLMB = dlmb
BUS_INTERFACE BRAM_PORT = dlmb_port
END
BEGIN lmb_bram_if_cntlr
PARAMETER INSTANCE = ilmb_cntlr
PARAMETER HW_VER = 3.00.b
PARAMETER C_BASEADDR = 0x00000000
PARAMETER C_HIGHADDR = 0x0000ffff
BUS_INTERFACE SLMB = ilmb
BUS_INTERFACE BRAM_PORT = ilmb_port
END
BEGIN bram_block
PARAMETER INSTANCE = lmb_bram
PARAMETER HW_VER = 1.00.a
BUS_INTERFACE PORTA = ilmb_port
BUS_INTERFACE PORTB = dlmb_port
END
BEGIN xps_gpio
PARAMETER INSTANCE = DIP_Switches_8Bits
PARAMETER C_ALL_INPUTS = 1
PARAMETER C_GPIO_WIDTH = 8
PARAMETER C_INTERRUPT_PRESENT = 0
PARAMETER C_IS_DUAL = 0
PARAMETER HW_VER = 2.00.a
PARAMETER C_BASEADDR = 0x81440000
PARAMETER C_HIGHADDR = 0x8144ffff
BUS_INTERFACE SPLB = mb_plb
PORT GPIO_IO_I = fpga_0_DIP_Switches_8Bits_GPIO_IO_I_pin
END
BEGIN xps_gpio
PARAMETER INSTANCE = LEDs_8Bits
PARAMETER C_ALL_INPUTS = 0
PARAMETER C_GPIO_WIDTH = 8
PARAMETER C_INTERRUPT_PRESENT = 0
PARAMETER C_IS_DUAL = 0
PARAMETER HW_VER = 2.00.a
PARAMETER C_BASEADDR = 0x81420000
PARAMETER C_HIGHADDR = 0x8142ffff
BUS_INTERFACE SPLB = mb_plb
PORT GPIO_IO_O = fpga_0_LEDs_8Bits_GPIO_IO_O_pin
END
BEGIN xps_gpio
PARAMETER INSTANCE = Push_Buttons_5Bits
PARAMETER C_ALL_INPUTS = 1
PARAMETER C_GPIO_WIDTH = 5
PARAMETER C_INTERRUPT_PRESENT = 0
PARAMETER C_IS_DUAL = 0
PARAMETER HW_VER = 2.00.a
PARAMETER C_BASEADDR = 0x81400000
PARAMETER C_HIGHADDR = 0x8140ffff
BUS_INTERFACE SPLB = mb_plb
PORT GPIO_IO_I = fpga_0_Push_Buttons_5Bits_GPIO_IO_I_pin
END
BEGIN clock_generator
PARAMETER INSTANCE = clock_generator_0
PARAMETER C_CLKIN_FREQ = 100000000
PARAMETER C_CLKOUT0_FREQ = 66666666
PARAMETER C_CLKOUT0_PHASE = 0
PARAMETER C_CLKOUT0_GROUP = NONE
PARAMETER C_CLKOUT0_BUF = TRUE
PARAMETER C_EXT_RESET_HIGH = 0
PARAMETER HW_VER = 4.02.a
PORT CLKIN = CLK_S
PORT CLKOUT0 = clk_66_6667MHz
PORT RST = sys_rst_s
PORT LOCKED = Dcm_all_locked
END
BEGIN mdm
PARAMETER INSTANCE = mdm_0
PARAMETER C_MB_DBG_PORTS = 1
PARAMETER C_USE_UART = 1
PARAMETER HW_VER = 2.00.b
PARAMETER C_BASEADDR = 0x84400000
PARAMETER C_HIGHADDR = 0x8440ffff
BUS_INTERFACE SPLB = mb_plb
BUS_INTERFACE MBDEBUG_0 = microblaze_0_mdm_bus
PORT Debug_SYS_Rst = Debug_SYS_Rst
END
BEGIN proc_sys_reset
PARAMETER INSTANCE = proc_sys_reset_0
PARAMETER C_EXT_RESET_HIGH = 0
PARAMETER HW_VER = 3.00.a
PORT Slowest_sync_clk = clk_66_6667MHz
PORT Ext_Reset_In = sys_rst_s
PORT MB_Debug_Sys_Rst = Debug_SYS_Rst
PORT Dcm_locked = Dcm_all_locked
PORT MB_Reset = mb_reset
PORT Bus_Struct_Reset = sys_bus_reset
PORT Peripheral_Reset = sys_periph_reset
END
BEGIN spiifc
PARAMETER INSTANCE = spiifc_0
PARAMETER HW_VER = 1.00.a
PARAMETER C_BASEADDR = 0x85000000
PARAMETER C_HIGHADDR = 0x8500FFFF
PARAMETER C_MEM0_BASEADDR = 0x85010000
PARAMETER C_MEM0_HIGHADDR = 0x85010FFF
PARAMETER C_MEM1_BASEADDR = 0x85011000
PARAMETER C_MEM1_HIGHADDR = 0x85011FFF
BUS_INTERFACE SPLB = mb_plb
PORT SPI_CLK = spiifc_0_SPI_CLK
PORT SPI_MOSI = spiifc_0_SPI_MOSI
PORT SPI_MISO = spiifc_0_SPI_MISO
PORT SPI_SS = spiifc_0_SPI_SS
END
BEGIN xps_central_dma
PARAMETER INSTANCE = xps_central_dma_0
PARAMETER HW_VER = 2.03.a
PARAMETER C_BASEADDR = 0x86000000
PARAMETER C_HIGHADDR = 0x8600FFFF
BUS_INTERFACE MPLB = mb_plb
BUS_INTERFACE SPLB = mb_plb
END
#Please do not modify this file by hand
XmpVersion: 13.2
VerMgmt: 13.2
IntStyle: default
Flow: ise
MHS File: system.mhs
Architecture: spartan6
Device: xc6slx45
Package: csg324
SpeedGrade: -2
UserCmd1:
UserCmd1Type: 0
UserCmd2:
UserCmd2Type: 0
GenSimTB: 0
SdkExportBmmBit: 1
SdkExportDir: SDK/SDK_Export
InsertNoPads: 0
WarnForEAArch: 1
HdlLang: VHDL
SimModel: BEHAVIORAL
ExternalMemSim: 0
UcfFile: data/system.ucf
EnableParTimingError: 1
ShowLicenseDialog: 1
Processor: microblaze_0
ElfImp:
ElfSim:
#################################################################
# Makefile generated by Xilinx Platform Studio
# Project:C:\Users\mjlyons\workspace\vSPI\projnav\xps\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:/Xilinx/13.2/ISE_DS/EDK
SYSTEM = system
MHSFILE = system.mhs
FPGA_ARCH = spartan6
DEVICE = xc6slx45csg324-2
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)
SIMGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_SIM_FILE_ARGS) -msg __xps/ise/xmsgprops.lst -s isim
CORE_STATE_DEVELOPMENT_FILES =
WRAPPER_NGC_FILES = implementation/microblaze_0_wrapper.ngc \
implementation/mb_plb_wrapper.ngc \
implementation/ilmb_wrapper.ngc \
implementation/dlmb_wrapper.ngc \
implementation/dlmb_cntlr_wrapper.ngc \
implementation/ilmb_cntlr_wrapper.ngc \
implementation/lmb_bram_wrapper.ngc \
implementation/dip_switches_8bits_wrapper.ngc \
implementation/leds_8bits_wrapper.ngc \
implementation/push_buttons_5bits_wrapper.ngc \
implementation/clock_generator_0_wrapper.ngc \
implementation/mdm_0_wrapper.ngc \
implementation/proc_sys_reset_0_wrapper.ngc \
implementation/spiifc_0_wrapper.ngc \
implementation/xps_central_dma_0_wrapper.ngc
POSTSYN_NETLIST = implementation/$(SYSTEM).ngc
SYSTEM_BIT = implementation/$(SYSTEM).bit
DOWNLOAD_BIT = implementation/download.bit
SYSTEM_ACE = implementation/$(SYSTEM).ace
UCF_FILE = data\system.ucf
BMM_FILE = implementation/$(SYSTEM).bmm
BITGEN_UT_FILE = etc/bitgen.ut
XFLOW_OPT_FILE = etc/fast_runtime.opt
XFLOW_DEPENDENCY = __xps/xpsxflow.opt $(XFLOW_OPT_FILE)
XPLORER_DEPENDENCY = __xps/xplorer.opt
XPLORER_OPTIONS = -p $(DEVICE) -uc $(SYSTEM).ucf -bm $(SYSTEM).bmm -max_runs 7
FPGA_IMP_DEPENDENCY = $(BMM_FILE) $(POSTSYN_NETLIST) $(UCF_FILE) $(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)
......@@ -6,7 +6,7 @@ class SpiComm:
_port = 0 # Change if using multiple Cheetahs
_mode = 3 # spiifc SPI mode
_bitrate = 30000 # bytes
_bitrate = 22000 # kbps
handle = None # handle to Cheetah SPI
......@@ -34,24 +34,48 @@ class SpiComm:
ch_spi_queue_clear(self.handle)
ch_spi_queue_oe(self.handle, 1)
ch_spi_queue_ss(self.handle, 0x1)
ch_spi_queue_byte(self.handle, 1, 1) # Sending data to slave
for byte in byteArray:
ch_spi_queue_byte(self.handle, 1, byte)
ch_spi_queue_ss(self.handle, 0)
ch_spi_queue_oe(self.handle, 0)
(actualByteCount, data_in) = ch_spi_batch_shift(self.handle, byteCount)
def RecvFromSlave(self, byteCount):
def RecvFromSlave(self, command, byteCount):
totalByteCount = byteCount + 1 # Extra byte for cmd
data_in = array('B', [0 for i in range(totalByteCount)])
actualByteCount = 0
ch_spi_queue_clear(self.handle)
ch_spi_queue_oe(self.handle, 1)
ch_spi_queue_ss(self.handle, 0x1)
ch_spi_queue_byte(self.handle, 1, 3) # Receive data from slave
for byteIndex in range(byteCount):
ch_spi_queue_byte(self.handle, 1, 0)
ch_spi_queue_ss(self.handle, 0)
ch_spi_queue_ss(self.handle, 1)
ch_spi_queue_byte(self.handle, 1, command) # Receive data from slave
ch_spi_queue_byte(self.handle, byteCount, 0xFF)
ch_spi_queue_ss(self.handle, 0x0)
ch_spi_queue_oe(self.handle, 0)
(actualByteCount, data_in) = ch_spi_batch_shift(self.handle,
totalByteCount)
return data_in
return data_in[1:]
def ReadMemory(self, byteCount):
return self.RecvFromSlave(0x3, byteCount)
def WriteMemory(self, bytesToWrite):
bytePacket = [0x01]
bytePacket.extend(bytesToWrite)
return self.SendToSlave(bytePacket)
def ReadReg(self, regId):
commandCode = 0x80 + regId
regValBytes = self.RecvFromSlave(commandCode, 4)
regValWord = 0
for regValByte in regValBytes:
regValWord = (regValWord * 256) + regValByte
return regValWord
def WriteReg(self, regId, value):
commandCode = 0xC0 + regId
bytesToSend = [commandCode, 0, 0, 0, 0]
for sendByteId in range(4,0,-1):
bytesToSend[sendByteId] = value % 256
value = value / 256
self.SendToSlave(bytesToSend)
import sys
import spilib
import time
import datetime
import random
def GenRandomByteArray(byteCount):
dataToSend = []
for byteIndex in range(byteCount):
dataToSend.append(random.randint(0, 255))
return dataToSend
#
# SingleBytePacketTest:
#
# Sends a predefined pattern of single-byte SPI transmissions (master-out)
#
def SingleBytePacketsSendTest():
packetsToSend = [[0x55],[0xAA],[0x33],[0x66],[0xCC],[0x99],[0xF0],\
[0x0F],[0xFF],[0x00]]
packetIndex = 0
while True:
dataToSend = packetsToSend[packetIndex]
sys.stdout.write("Sending: [")
for sendByte in dataToSend:
sys.stdout.write(" 0x%02x" % (sendByte))
sys.stdout.write(" ]\n")
spi.SendToSlave(dataToSend)
packetIndex = (packetIndex + 1) % len(packetsToSend)
time.sleep(1)
packetIndex + 1
#
# MultiBytePacketSendTest:
#
# Sends a predefined single multi-byte packet over SPI (master-out)
#
def MultiBytePacketSendTest():
dataToSend = [0x01, 0x55, 0xAA, 0x33, 0x66, 0xCC, 0x99, 0xF0, 0xFF, 0x0F]
sys.stdout.write("Sending: [")
for sendByte in dataToSend:
sys.stdout.write(" 0x%02x" % (sendByte))
sys.stdout.write(" ]\n")
spi.SendToSlave(dataToSend)
#
# MemLoopbackTest:
#
# Sends randomly generated blocks of data over SPI, then reads back
# data. Assumes that slave is using a common read and write buffer
# and reads the block of data back. The test verifies that the block of
# data is identical to the one sent. The test will run continuously
# until a received packet does not match the sent packet.
#
def MemLoopbackTest():
passCount = 0
loopbackErrors = 0
packetByteSize = 4000
while loopbackErrors == 0:
print("PassCount: %d" % (passCount))
dataToSend = GenRandomByteArray(packetByteSize)
print("Sending [0x%x 0x%x 0x%x 0x%x 0x%x ...]" % (
dataToSend[0], dataToSend[1], dataToSend[2],
dataToSend[3], dataToSend[4]))
# Send some data to the slave
sys.stdout.write("Sending data to slave...");
spi.WriteMemory(dataToSend)
sys.stdout.write("done!\n")
# Receive some data from the slave
recvData = spi.ReadMemory(packetByteSize)
# Make sure bytes sent match bytes received
if len(recvData) != packetByteSize:
sys.stdout.write("[FAIL] Did not receive 4096 bytes from spiifc\n")
sys.exit(0)
for byteIndex in range(packetByteSize):
if recvData[byteIndex] != dataToSend[byteIndex]:
sys.stdout.write("[FAIL] mismatch at index %d: sent=0x%x, recv=0x%x\n" \
% (byteIndex, dataToSend[byteIndex], recvData[byteIndex]))
loopbackErrors = loopbackErrors + 1
if loopbackErrors >= 5:
break
if 0 == loopbackErrors:
sys.stdout.write("[PASS] All loopback SPI bytes match.\n");
passCount = passCount + 1
# Print number of passed tests before failure
print("PassCount: %d" % (passCount))
#
# RegLoopbackTest:
#
# Randomly writes and reads to vSPI's register and makes sure
# values are as expected
#
def RegLoopbackTest():
# First, zero out all registers
print("Zeroing all registers...")
for regId in range(16):
spi.WriteReg(regId=regId, value=0)
# Second, check that all registers are zeroed
print("Checking all registers are zeroed...")
for regId in range(16):
regVal = spi.ReadReg(regId)
if (0 != regVal):
sys.stdout.write("ERROR: Reg %d was not zeroed (was 0x%08x)\n" % \
(regId, regVal))
return
# Local mapping of expected register values
expectedRegs = list(0 for i in range(16))
# Random read and writes
passCount = 0
while (True):
print("")
regWriteId = random.randint(0, 15)
regReadId = random.randint(0, 15)
regWriteVal = random.randint(0, 0xFFFFFFFF)
print("Writing Reg%d=0x%08x" % (regWriteId, regWriteVal))
spi.WriteReg(regId=regWriteId, value=regWriteVal)
expectedRegs[regWriteId] = regWriteVal
print("Checking Reg%d==0x%08x" % (regReadId, expectedRegs[regReadId]))
regReadVal = spi.ReadReg(regReadId)
if (expectedRegs[regReadId] != regReadVal):
sys.stderr.write("ERROR: Reg %d - expected=0x%08x, actual=0x%08x\n" % \
(expectedRegs[regReadId], regReadVal))
return
passCount = passCount + 1
print("PASS [%d]" % (passCount))
#
# ReadRegsTest
#
# Reads out the value of all registers
#
def ReadRegsTest():
for regId in range(16):
regVal = spi.ReadReg(regId)
print("Reg%d = 0x%08x" % (regId, regVal))
#
# WriteRegsTest
#
# Writes a test pattern to the spi registers
#
def WriteRegsTest():
for regId in range(16):
regVal = 255 - regId
regVal = (regVal * 256) + regVal
regVal = (regVal * 256 * 256) + regVal
print("Reg%d = 0x%08x" % (regId, regVal))
spi.WriteReg(regId=regId, value=regVal)
#
# XpsLoopbackTest
#
# Tests loopback utilizing the XPS/XSDK system and SPI memory + SPI.r0
#
def XpsLoopbackTest():
dataBytes = 4096
passCount = 0
while (True):
print("Starting run %d..." % (passCount + 1))
# Generate random data blob
dataToSend = GenRandomByteArray(dataBytes)
# Send data blob
print("Sending data to FPGA")
spi.WriteMemory(dataToSend)
# Set SPI.reg0 = 0x1 (M->S transfer complete)
print("Setting spi.r0[0] = 1")
spi.WriteReg(regId=0, value=0x1)
# Wait for microblaze to finish DMAing data from MOSI to MISO buffer
print("Waiting for FPGA's DMA to complete (poll spi.r0[1])")
while 0 == (spi.ReadReg(regId=0) & 0x2):
pass
# Read MISO buffer
print("Read data back from FPGA")
recvData = spi.ReadMemory(len(dataToSend))
print("Verify: comparing send and received data")
# Verify loopbacked data matches original data
errorCount = 0
if len(recvData) != len(dataToSend):
sys.stdout.write("[ERROR] received data blob length (%d) does not " + \
"match original length (%d)" % \
(len(recvData), len(dataToSend)))
errorCount = errorCount + 1
return
for byteIndex in range(len(dataToSend)):
if dataToSend[byteIndex] != recvData[byteIndex]:
print("[ERROR] transmission mismatch - Index %d, Expect:0x%02x, " + \
"Actual:0x%02x" % (byteIndex, dataToSend[byteIndex], \
recvData[byteIndex]))
errorCount = errorCount + 1
if errorCount >= 5:
print("Stopping due to errors...")
return
if 0 == errorCount:
print("[PASS] Loopbacked without any errors\n")
passCount = passCount + 1
else:
return
#
# PrintCliSyntax:
#
# Displays the syntax for the command line interface (CLI)
def PrintCliSyntax():
print """
Syntax:
spitest.py test [random-seed]
Valid tests (case sensitive):
- SingleBytePacketsSend
- MultiBytePacketSend
- MemLoopback
- RegLoopback
- ReadRegs
- WriteRegsTest
- XpsLoopback
"""
#
# Main
#
# Parse CLI
if len(sys.argv) < 2 or len(sys.argv) > 3:
PrintCliSyntax()
sys.exit(1)
# Retreive specified test function(s)
cliTest = sys.argv[1]
testMapping = {'SingleBytePacketsSend' : [SingleBytePacketsSendTest],
'MultiBytePacketSend' : [MultiBytePacketSendTest],
'MemLoopback' : [MemLoopbackTest],
'RegLoopback' : [RegLoopbackTest],
'ReadRegs' : [ReadRegsTest],
'WriteRegs' : [WriteRegsTest],
'XpsLoopback' : [XpsLoopbackTest]}
if cliTest not in testMapping:
sys.stderr.write('%s is not a valid test.\n' % (cliTest,))
PrintCliSyntax()
sys.exit(1)
testsToRun = testMapping[cliTest]
# Seed random number generator
if len(sys.argv) == 3:
seed = int(sys.argv[2])
else:
seed = datetime.datetime.utcnow().microsecond
# Initialize Cheetah SPI/USB adapter
spi = spilib.SpiComm()
# Send some data to the slave
sys.stdout.write("Sending data to slave...");
spi.SendToSlave([0xFF, 0xF0, 0x33, 0x55, 0x12, 0x34, 0x56, 0x53, 0x9A])
sys.stdout.write("done!")
# Receive some data from the slave
recvData = spi.RecvFromSlave(4096)
sys.stdout.write("Received data from slave:\n")
for recvByte in recvData:
sys.stdout.write("%x " % recvByte)
sys.stdout.write("\nDone!\n")
# Seed random
print("Random seed: %d" % seed)
random.seed(seed)
# Run specified test
for testToRun in testsToRun:
testToRun()
# Close and exit
sys.stdout.write("Exiting...\n")
......
#!/bin/sh
#
# pre-xilinx-checkin.sh
#
# Michael J. Lyons, 2012
#
# Deletes temporary files left over, even after xilinx tools do a 'clean'
#
VSPI_ROOT=..
RM="rm -f"
$RM $VSPI_ROOT/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/iseconfig/*.xreport
$RM $VSPI_ROOT/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/*.html
$RM $VSPI_ROOT/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/webtalk_impact.xml
$RM $VSPI_ROOT/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/*.xrpt
$RM $VSPI_ROOT/projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/*.xreport
#!/bin/sh
cp ../test/spi_base/rc-bytes*.txt ../projnav/xps/pcores/spiifc_v1_00_a/devl/projnav/
......@@ -3,7 +3,7 @@
// Company:
// Engineer:
//
// Create Date: 19:24:33 10/18/2011
// Create Date: 16:46:12 03/02/2012
// Design Name:
// Module Name: spiifc
// Project Name:
......@@ -30,203 +30,259 @@ module spiifc(
rcMemAddr,
rcMemData,
rcMemWE,
regAddr,
regReadData,
regWriteEn,
regWriteData,
debug_out
);
//
// Parameters
//
parameter AddrBits = 12;
// Defines
`define CMD_READ_START 8'd1
`define CMD_READ_MORE 8'd2
`define CMD_WRITE_START 8'd3
`define STATE_GET_CMD 8'd0
`define STATE_READING 8'd1
`define STATE_WRITING 8'd2
//
// Input/Output defs
//
input Reset;
input SysClk;
input SPI_CLK;
output SPI_MISO;
input SPI_MOSI;
input SPI_SS;
output [AddrBits-1:0] txMemAddr;
input [7:0] txMemData;
output [AddrBits-1:0] rcMemAddr;
output [7:0] rcMemData;
output rcMemWE;
output [7:0] debug_out;
//
// Registers
//
reg [ 7: 0] debug_reg;
reg [ 7: 0] rcByteReg;
reg rcStarted;
reg [ 2: 0] rcBitIndexReg;
reg [11: 0] rcMemAddrReg;
reg [11: 0] rcMemAddrNext;
reg [ 7: 0] rcMemDataReg;
reg rcMemWEReg;
reg ssPrev;
reg ssFastToggleReg;
reg ssSlowToggle;
reg ssTurnOnReg;
reg ssTurnOnHandled;
reg [ 7: 0] cmd;
reg [ 7: 0] stateReg;
reg [11: 0] txMemAddrReg;
reg [ 2: 0] txBitAddr;
//
// Wires
//
wire rcByteValid;
wire [ 7: 0] rcByte;
wire rcStarting;
wire [ 2: 0] rcBitIndex;
wire ssTurnOn;
wire ssFastToggle;
wire [ 7: 0] state;
wire txMemAddrReset;
//
// Output assigns
//
assign debug_out = debug_reg;
assign rcMemAddr = rcMemAddrReg;
assign rcMemData = rcMemDataReg;
assign rcMemWE = rcMemWEReg;
assign txMemAddrReset = (rcByteValid && rcByte == `CMD_WRITE_START ? 1 : 0);
assign txMemAddr = (txMemAddrReset ? 0 : txMemAddrReg);
assign SPI_MISO = txMemData[txBitAddr];
assign ssFastToggle =
(ssPrev == 1 && SPI_SS == 0 ? ~ssFastToggleReg : ssFastToggleReg);
//
// Wire assigns
//
assign rcByteValid = rcStarted && rcBitIndex == 0;
assign rcByte = {rcByteReg[7:1], SPI_MOSI};
assign rcStarting = ssTurnOn;
assign rcBitIndex = (rcStarting ? 3'd7 : rcBitIndexReg);
assign ssTurnOn = ssSlowToggle ^ ssFastToggle;
assign state = (rcStarting ? `STATE_GET_CMD : stateReg);
initial begin
ssSlowToggle <= 0;
);
//
// Parameters
//
parameter AddrBits = 12;
parameter RegAddrBits = 4;
//
// Defines
//
`define CMD_READ_START 8'd1
`define CMD_READ_MORE 8'd2
`define CMD_WRITE_START 8'd3
`define CMD_WRITE_MORE 8'd4
`define CMD_INTERRUPT 8'd5
`define CMD_REG_BASE 8'd128
`define CMD_REG_BIT 7
`define CMD_REG_WE_BIT 6
`define CMD_REG_ID_MASK 8'h3F
`define STATE_GET_CMD 8'd0
`define STATE_READING 8'd1
`define STATE_WRITING 8'd2
`define STATE_WRITE_INTR 8'd3
`define STATE_BUILD_WORD 8'd4
`define STATE_SEND_WORD 8'd5
//
// Input/Outputs
//
input Reset;
input SysClk;
input SPI_CLK;
output SPI_MISO; // outgoing (from respect of this module)
input SPI_MOSI; // incoming (from respect of this module)
input SPI_SS;
output [AddrBits-1:0] txMemAddr; // outgoing data
input [7:0] txMemData;
output [AddrBits-1:0] rcMemAddr; // incoming data
output [7:0] rcMemData;
output rcMemWE;
output [RegAddrBits-1:0] regAddr; // Register read address (combinational)
input [31:0] regReadData; // Result of register read
output regWriteEn; // Enable write to register, otherwise read
output [31:0] regWriteData; // Register write data
output [7:0] debug_out;
//
// Registers
//
reg SPI_CLK_reg; // Stabalized version of SPI_CLK
reg SPI_SS_reg; // Stabalized version of SPI_SS
reg SPI_MOSI_reg; // Stabalized version of SPI_MOSI
reg prev_spiClk; // Value of SPI_CLK during last SysClk cycle
reg prev_spiSS; // Value of SPI_SS during last SysClk cycle
reg [7:0] state_reg; // Register backing the 'state' wire
reg [7:0] rcByte_reg; // Register backing 'rcByte'
reg [2:0] rcBitIndex_reg; // Register backing 'rcBitIndex'
reg [AddrBits-1:0] rcMemAddr_reg; // Byte addr to write MOSI data to
reg [7:0] debug_reg; // register backing debug_out signal
reg [2:0] txBitIndex_reg; // Register backing txBitIndex
reg [AddrBits-1:0] txMemAddr_reg; // Register backing txAddr
reg [7:0] command; // Command being handled
reg [31:0] rcWord; // Incoming word being built
reg [1:0] rcWordByteId; // Which byte the in the rcWord to map to
reg [RegAddrBits-1:0] regAddr_reg; // Address of register to read/write to
//
// Wires
//
wire risingSpiClk; // Did the SPI_CLK rise since last SysClk cycle?
wire validSpiBit; // Are the SPI MOSI/MISO bits new and valid?
reg [7:0] state; // Current state in the module's state machine (always @* effectively wire)
wire rcByteValid; // rcByte is valid and new
wire [7:0] rcByte; // Byte received from master
wire [2:0] rcBitIndex; // Bit of rcByte to write to next
reg [2:0] txBitIndex; // bit of txByte to send to master next
reg [AddrBits-1:0] txMemAddr_oreg; // Wirereg piped to txMemAddr output
reg [7:0] regReadByte_oreg; // Which byte of the reg word we're reading out master
// Save buffered SPI inputs
always @(posedge SysClk) begin
SPI_CLK_reg <= SPI_CLK;
SPI_SS_reg <= SPI_SS;
SPI_MOSI_reg <= SPI_MOSI;
end
// Detect new valid bit
always @(posedge SysClk) begin
prev_spiClk <= SPI_CLK_reg;
end
assign risingSpiClk = SPI_CLK_reg & (~prev_spiClk);
assign validSpiBit = risingSpiClk & (~SPI_SS_reg);
// Detect new SPI packet (SS dropped low)
always @(posedge SysClk) begin
prev_spiSS <= SPI_SS_reg;
end
assign packetStart = prev_spiSS & (~SPI_SS_reg);
// Build incoming byte
always @(posedge SysClk) begin
if (validSpiBit) begin
rcByte_reg[rcBitIndex] <= SPI_MOSI_reg;
rcBitIndex_reg <= (rcBitIndex > 0 ? rcBitIndex - 1 : 7);
end else begin
rcBitIndex_reg <= rcBitIndex;
end
always @(posedge SysClk) begin
ssPrev <= SPI_SS;
if (Reset) begin
ssTurnOnReg <= 0;
ssFastToggleReg <= 0;
end
assign rcBitIndex = (Reset || packetStart ? 7 : rcBitIndex_reg);
assign rcByte = {rcByte_reg[7:1], SPI_MOSI_reg};
assign rcByteValid = (validSpiBit && rcBitIndex == 0 ? 1 : 0);
// Incoming MOSI data buffer management
assign rcMemAddr = rcMemAddr_reg;
assign rcMemData = rcByte;
assign rcMemWE = (state == `STATE_READING && rcByteValid ? 1 : 0);
always @(posedge SysClk) begin
if (Reset || (`STATE_GET_CMD == state && rcByteValid)) begin
rcMemAddr_reg <= 0;
end else if (rcMemWE) begin
rcMemAddr_reg <= rcMemAddr + 1;
end else begin
rcMemAddr_reg <= rcMemAddr;
end
end
// Outgoing MISO data buffer management
always @(*) begin
if (Reset || (state == `STATE_GET_CMD && rcByteValid &&
(rcByte == `CMD_WRITE_START ||
rcByte[`CMD_REG_BIT:`CMD_REG_WE_BIT] == 2'b11)
)) begin
txBitIndex <= 3'd7;
txMemAddr_oreg <= 0;
end else begin
txBitIndex <= txBitIndex_reg;
//txMemAddr_oreg <= txMemAddr_reg;
if ((state == `STATE_WRITING || state == `STATE_SEND_WORD) &&
validSpiBit && txBitIndex == 0) begin
txMemAddr_oreg <= txMemAddr_reg + 1;
end else begin
if (ssPrev & (~SPI_SS)) begin
ssTurnOnReg <= 1;
ssFastToggleReg <= ~ssFastToggleReg;
end else if (ssTurnOnHandled) begin
ssTurnOnReg <= 0;
end
txMemAddr_oreg <= txMemAddr_reg;
end
end
always @(posedge SPI_CLK) begin
ssSlowToggle <= ssFastToggle;
if (Reset) begin
// Resetting
rcByteReg <= 8'h00;
rcStarted <= 0;
rcBitIndexReg <= 3'd7;
ssTurnOnHandled <= 0;
debug_reg <= 8'hFF;
end else begin
// Not resetting
ssTurnOnHandled <= ssTurnOn;
stateReg <= state;
rcMemAddrReg <= rcMemAddrNext;
if (~SPI_SS) begin
rcByteReg[rcBitIndex] <= SPI_MOSI;
rcBitIndexReg <= rcBitIndex - 3'd1;
rcStarted <= 1;
// Update txBitAddr if writing out
if (`STATE_WRITING == state) begin
if (txBitAddr == 3'd1) begin
txMemAddrReg <= txMemAddr + 1;
end
txBitAddr <= txBitAddr - 1;
end
end
// We've just received a byte (well, currently receiving the last bit)
if (rcByteValid) begin
// For now, just display on LEDs
debug_reg <= rcByte;
if (`STATE_GET_CMD == state) begin
cmd <= rcByte; // Will take effect next cycle
if (`CMD_READ_START == rcByte) begin
rcMemAddrNext <= 0;
stateReg <= `STATE_READING;
end else if (`CMD_READ_MORE == rcByte) begin
stateReg <= `STATE_READING;
end else if (`CMD_WRITE_START == rcByte) begin
txBitAddr <= 3'd7;
stateReg <= `STATE_WRITING;
txMemAddrReg <= txMemAddr; // Keep at 0
end
end else if (`STATE_READING == state) begin
rcMemDataReg <= rcByte;
rcMemAddrNext <= rcMemAddr + 1;
rcMemWEReg <= 1;
end
end else begin
// Not a valid byte
rcMemWEReg <= 0;
end // valid/valid' byte
end
always @(posedge SysClk) begin
if (validSpiBit && (state == `STATE_WRITING || state == `STATE_SEND_WORD)) begin
txBitIndex_reg <= (txBitIndex == 0 ? 7 : txBitIndex - 1);
end else begin
txBitIndex_reg <= txBitIndex;
end
txMemAddr_reg <= txMemAddr;
// if (state == `STATE_WRITING && validSpiBit && txBitIndex == 0) begin
// txMemAddr_reg <= txMemAddr + 1;
// end else begin
// txMemAddr_reg <= txMemAddr;
// end
end
assign txMemAddr = txMemAddr_oreg;
assign SPI_MISO = (state == `STATE_SEND_WORD ? regReadByte_oreg[txBitIndex] : txMemData[txBitIndex]);
// State machine
always @(*) begin
if (Reset || packetStart) begin
state <= `STATE_GET_CMD;
// Handled in state_reg logic, should be latched, not immediate.
// end else if (state_reg == `STATE_GET_CMD && rcByteValid) begin
// state <= rcByte;
end else begin
state <= state_reg;
end
end
always @(posedge SysClk) begin
if (`STATE_GET_CMD == state && rcByteValid) begin
if (`CMD_READ_START == rcByte) begin
state_reg <= `STATE_READING;
end else if (`CMD_READ_MORE == rcByte) begin
state_reg <= `STATE_READING;
end else if (`CMD_WRITE_START == rcByte) begin
state_reg <= `STATE_WRITING;
end else if (`CMD_WRITE_MORE == rcByte) begin
state_reg <= `STATE_WRITING;
end else if (rcByte[`CMD_REG_BIT] != 0) begin
// Register access
rcWordByteId <= 0;
command <= `CMD_REG_BASE; // Write reg Read reg
state_reg <= (rcByte[`CMD_REG_WE_BIT] ? `STATE_BUILD_WORD : `STATE_SEND_WORD);
end else if (`CMD_INTERRUPT == rcByte) begin
// TODO: NYI
end
end else if (`STATE_BUILD_WORD == state && rcByteValid) begin
if (0 == rcWordByteId) begin
rcWord[31:24] <= rcByte;
rcWordByteId <= 1;
end else if (1 == rcWordByteId) begin
rcWord[23:16] <= rcByte;
rcWordByteId <= 2;
end else if (2 == rcWordByteId) begin
rcWord[15:8] <= rcByte;
rcWordByteId <= 3;
end else if (3 == rcWordByteId) begin
rcWord[7:0] <= rcByte;
state_reg <= `STATE_GET_CMD;
end
end else if (`STATE_SEND_WORD == state && rcByteValid) begin
rcWordByteId <= rcWordByteId + 1;
state_reg <= (rcWordByteId == 3 ? `STATE_GET_CMD : `STATE_SEND_WORD);
end // Reset/Reset'
end else begin
state_reg <= state;
end
end
// Register logic
assign regAddr = (`STATE_GET_CMD == state && rcByteValid && rcByte[`CMD_REG_BIT] ? (rcByte & `CMD_REG_ID_MASK) : regAddr_reg);
assign regWriteEn = (`STATE_BUILD_WORD == state && rcByteValid && 3 == rcWordByteId ? 1 : 0);
assign regWriteData = {rcWord[31:8], rcByte};
always @(posedge SysClk) begin
regAddr_reg <= regAddr;
end
always @(*) begin
case (rcWordByteId)
0: regReadByte_oreg <= regReadData[31:24];
1: regReadByte_oreg <= regReadData[23:16];
2: regReadByte_oreg <= regReadData[15:8];
3: regReadByte_oreg <= regReadData[7:0];
endcase
end
// Debugging
always @(posedge SysClk) begin
if (rcByteValid) begin
debug_reg <= rcByte;
end
end
assign debug_out = debug_reg;
endmodule
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 19:24:33 10/18/2011
// Design Name:
// Module Name: spiifc
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module spiifc(
Reset,
SysClk,
SPI_CLK,
SPI_MISO,
SPI_MOSI,
SPI_SS,
txMemAddr,
txMemData,
rcMemAddr,
rcMemData,
rcMemWE,
debug_out
);
//
// Parameters
//
parameter AddrBits = 12;
// Defines
`define CMD_READ_START 8'd1
`define CMD_READ_MORE 8'd2
`define CMD_WRITE_START 8'd3
`define STATE_GET_CMD 8'd0
`define STATE_READING 8'd1
`define STATE_WRITING 8'd2
//
// Input/Output defs
//
input Reset;
input SysClk;
input SPI_CLK;
output SPI_MISO;
input SPI_MOSI;
input SPI_SS;
output [AddrBits-1:0] txMemAddr;
input [7:0] txMemData;
output [AddrBits-1:0] rcMemAddr;
output [7:0] rcMemData;
output rcMemWE;
output [7:0] debug_out;
//
// Registers
//
reg [ 7: 0] debug_reg;
reg [ 7: 0] rcByteReg;
reg rcStarted;
reg [ 2: 0] rcBitIndexReg;
reg [11: 0] rcMemAddrReg;
reg [11: 0] rcMemAddrNext;
reg [ 7: 0] rcMemDataReg;
reg rcMemWEReg;
reg ssPrev;
reg ssFastToggleReg;
reg ssSlowToggle;
reg ssTurnOnReg;
reg ssTurnOnHandled;
reg [ 7: 0] cmd;
reg [ 7: 0] stateReg;
reg [11: 0] txMemAddrReg;
reg [ 2: 0] txBitAddr;
//
// Wires
//
wire rcByteValid;
wire [ 7: 0] rcByte;
wire rcStarting;
wire [ 2: 0] rcBitIndex;
wire ssTurnOn;
wire ssFastToggle;
wire [ 7: 0] state;
wire txMemAddrReset;
//
// Output assigns
//
assign debug_out = debug_reg;
assign rcMemAddr = rcMemAddrReg;
assign rcMemData = rcMemDataReg;
assign rcMemWE = rcMemWEReg;
assign txMemAddrReset = (rcByteValid && rcByte == `CMD_WRITE_START ? 1 : 0);
assign txMemAddr = (txMemAddrReset ? 0 : txMemAddrReg);
assign SPI_MISO = txMemData[txBitAddr];
assign ssFastToggle =
(ssPrev == 1 && SPI_SS == 0 ? ~ssFastToggleReg : ssFastToggleReg);
//
// Wire assigns
//
assign rcByteValid = rcStarted && rcBitIndex == 0;
assign rcByte = {rcByteReg[7:1], SPI_MOSI};
assign rcStarting = ssTurnOn;
assign rcBitIndex = (rcStarting ? 3'd7 : rcBitIndexReg);
assign ssTurnOn = ssSlowToggle ^ ssFastToggle;
assign state = (rcStarting ? `STATE_GET_CMD : stateReg);
initial begin
ssSlowToggle <= 0;
end
always @(posedge SysClk) begin
ssPrev <= SPI_SS;
if (Reset) begin
ssTurnOnReg <= 0;
ssFastToggleReg <= 0;
end else begin
if (ssPrev & (~SPI_SS)) begin
ssTurnOnReg <= 1;
ssFastToggleReg <= ~ssFastToggleReg;
end else if (ssTurnOnHandled) begin
ssTurnOnReg <= 0;
end
end
end
always @(posedge SPI_CLK) begin
ssSlowToggle <= ssFastToggle;
if (Reset) begin
// Resetting
rcByteReg <= 8'h00;
rcStarted <= 0;
rcBitIndexReg <= 3'd7;
ssTurnOnHandled <= 0;
debug_reg <= 8'hFF;
end else begin
// Not resetting
ssTurnOnHandled <= ssTurnOn;
stateReg <= state;
rcMemAddrReg <= rcMemAddrNext;
if (~SPI_SS) begin
rcByteReg[rcBitIndex] <= SPI_MOSI;
rcBitIndexReg <= rcBitIndex - 3'd1;
rcStarted <= 1;
// Update txBitAddr if writing out
if (`STATE_WRITING == state) begin
if (txBitAddr == 3'd1) begin
txMemAddrReg <= txMemAddr + 1;
end
txBitAddr <= txBitAddr - 1;
end
end
// We've just received a byte (well, currently receiving the last bit)
if (rcByteValid) begin
// For now, just display on LEDs
debug_reg <= rcByte;
if (`STATE_GET_CMD == state) begin
cmd <= rcByte; // Will take effect next cycle
if (`CMD_READ_START == rcByte) begin
rcMemAddrNext <= 0;
stateReg <= `STATE_READING;
end else if (`CMD_READ_MORE == rcByte) begin
stateReg <= `STATE_READING;
end else if (`CMD_WRITE_START == rcByte) begin
txBitAddr <= 3'd7;
stateReg <= `STATE_WRITING;
txMemAddrReg <= txMemAddr; // Keep at 0
end
end else if (`STATE_READING == state) begin
rcMemDataReg <= rcByte;
rcMemAddrNext <= rcMemAddr + 1;
rcMemWEReg <= 1;
end else if (`STATE_WRITING == state) begin
txBitAddr <= 3'd7;
stateReg <= `STATE_WRITING;
end
end else begin
// Not a valid byte
rcMemWEReg <= 0;
end // valid/valid' byte
end // Reset/Reset'
end
endmodule
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 17:49:15 11/02/2011
// Design Name:
// Module Name: spiwrap
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module spiloop(
input Reset,
input SysClk,
input spi_ss,
input spi_mosi,
input spi_clk,
output spi_miso,
output [7:0] leds
);
wire [7:0] debug_out;
wire [11:0] txMemAddr;
wire [7:0] txMemData;
wire [11:0] rcMemAddr;
wire [7:0] rcMemData;
wire rcMemWE;
wire [3:0] regAddr;
wire [31:0] regWriteData;
wire regWE;
reg [31:0] regReadData_wreg;
reg [31:0] regbank [0:15];
always @(*) begin // Read reg
regReadData_wreg <= regbank[regAddr];
end
always @(posedge SysClk) begin // Write reg
if (regWE) begin
regbank[regAddr] <= regWriteData;
end
end
spiloopmem your_instance_name (
.clka(SysClk), // input clka
.ena(1'b1), // input ena
.wea(rcMemWE), // input [0 : 0] wea
.addra(rcMemAddr), // input [11 : 0] addra
.dina(rcMemData), // input [7 : 0] dina
.clkb(SysClk), // input clkb
.enb(1'b1), // input enb
.addrb(txMemAddr), // input [11 : 0] addrb
.doutb(txMemData) // output [7 : 0] doutb
);
spiifc mySpiIfc (
.Reset(Reset),
.SysClk(SysClk),
.SPI_CLK(spi_clk),
.SPI_MISO(spi_miso),
.SPI_MOSI(spi_mosi),
.SPI_SS(spi_ss),
.txMemAddr(txMemAddr),
.txMemData(txMemData),
.rcMemAddr(rcMemAddr),
.rcMemData(rcMemData),
.rcMemWE(rcMemWE),
.regAddr(regAddr),
.regReadData(regReadData_wreg),
.regWriteData(regWriteData),
.regWriteEn(regWE),
.debug_out(debug_out)
);
//assign leds = debug_out ;
assign leds = txMemData;
endmodule
......@@ -56,19 +56,19 @@ always @(posedge SysClk) begin
end
end
spimem spiMemTx (
.clka(SysClk), // input clka
.ena(1'b1), // input ena
.wea(initMem), // input [0 : 0] wea
.addra(initMemAddr), // input [9 : 0] addra
.dina(initMemData), // input [31 : 0] dina
.douta(douta_dummy), // output [31 : 0] douta
.clkb(spi_clk), // input clkb
.enb(1'b1), // input enb
.web(1'b0), // input [0 : 0] web
.addrb(spi_addr), // input [11 : 0] addrb
.dinb(8'h00), // input [7 : 0] dinb
.doutb(spi_data) // output [7 : 0] doutb
buffermem spiMemTx (
.clka(SysClk), // input clkb
.ena(1'b1), // input enb
.wea(1'b0), // input [0 : 0] web
.addra(spi_addr), // input [11 : 0] addrb
.dina(8'h00), // input [7 : 0] dinb
.douta(spi_data), // output [7 : 0] doutb
.clkb(SysClk), // input clka
.enb(1'b1), // input ena
.web(initMem), // input [0 : 0] wea
.addrb(initMemAddr), // input [9 : 0] addra
.dinb(initMemData), // input [31 : 0] dina
.doutb(douta_dummy) // output [31 : 0] douta
);
wire spi_rcMem_we;
......@@ -76,18 +76,18 @@ wire [11:0] spi_rcMem_addr;
wire [ 7:0] spi_rcMem_data;
wire [ 7:0] debug_out;
wire [ 7:0] spi_rcMem_doutb_dummy;
spimem spiMemRc (
buffermem spiMemRc (
.clka(SysClk),
.ena(1'b1),
.wea(1'b0),
.addra(10'h001),
.douta(rcMem_douta),
.clkb(spi_clk),
.wea(spi_rcMem_we),
.addra(spi_rcMem_addr),
.dina(spi_rcMem_data),
.douta(spi_rcMem_doutb_dummy),
.clkb(SysClk),
.enb(1'b1),
.web(spi_rcMem_we),
.addrb(spi_rcMem_addr),
.dinb(spi_rcMem_data),
.doutb(spi_rcMem_doutb_dummy)
.web(1'b0),
.addrb(10'h001),
.doutb(rcMem_douta)
);
spiifc mySpiIfc (
......@@ -105,8 +105,6 @@ spiifc mySpiIfc (
.debug_out(debug_out)
);
assign leds = rcMem_douta[31:24];
assign leds = rcMem_douta[7:0] /* debug_out */;
endmodule
C3
F0
0F
5C
C5
83
00
00
00
00
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 11:08:12 02/15/2012
// Design Name: spiifc
// Module Name: C:/workspace/robobees/hbp/fpga/spitest/pcores/spi_v1_00_a/hdl/verilog/spiifc_tb2.v
// Project Name: spi
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: spiifc
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////
module spiifc_writereg_tb;
// Inputs
reg Reset;
reg SysClk;
reg SPI_CLK;
reg SPI_MOSI;
reg SPI_SS;
reg [7:0] txMemData;
reg [31:0] regReadData_wreg;
// Outputs
wire SPI_MISO;
wire [11:0] txMemAddr;
wire [11:0] rcMemAddr;
wire [7:0] rcMemData;
wire rcMemWE;
wire [7:0] debug_out;
wire [3:0] regAddr;
wire [31:0] regWriteData;
wire regWE;
// Register bank
reg [31:0] regbank [0:15];
// Instantiate the Unit Under Test (UUT)
spiifc uut (
.Reset(Reset),
.SysClk(SysClk),
.SPI_CLK(SPI_CLK),
.SPI_MISO(SPI_MISO),
.SPI_MOSI(SPI_MOSI),
.SPI_SS(SPI_SS),
.txMemAddr(txMemAddr),
.txMemData(txMemData),
.rcMemAddr(rcMemAddr),
.rcMemData(rcMemData),
.rcMemWE(rcMemWE),
.regAddr(regAddr),
.regReadData(regReadData_wreg),
.regWriteData(regWriteData),
.regWriteEn(regWE),
.debug_out(debug_out)
);
task recvByte;
input [7:0] rcByte;
integer rcBitIndex;
begin
$display("%g - spiifc receiving byte '0x%h'", $time, rcByte);
for (rcBitIndex = 0; rcBitIndex < 8; rcBitIndex = rcBitIndex + 1) begin
SPI_MOSI = rcByte[7 - rcBitIndex];
#100;
end
end
endtask
always begin
#20 SysClk = ~SysClk;
end
// Register bank
always @(*) begin // Read reg
regReadData_wreg <= regbank[regAddr];
end
always @(posedge SysClk) begin // Write reg
if (regWE) begin
regbank[regAddr] <= regWriteData;
end
end
reg SPI_CLK_en;
initial begin
#310
SPI_CLK_en = 1;
end
always begin
#10
if (SPI_CLK_en) begin
#40 SPI_CLK = ~SPI_CLK;
end
end
integer fdRcBytes;
integer fdTxBytes;
integer dummy;
integer currRcByte;
integer rcBytesNotEmpty;
reg [8*10:1] rcBytesStr;
initial begin
// Initialize Inputs
Reset = 0;
SysClk = 0;
SPI_CLK = 0;
SPI_CLK_en = 0;
SPI_MOSI = 0;
SPI_SS = 1;
txMemData = 0;
// Wait 100 ns for global reset to finish
#100;
Reset = 1;
#100;
Reset = 0;
#100;
// Add stimulus here
SPI_SS = 0;
// For each byte, transmit its bits
fdRcBytes = $fopen("rc-bytes-writereg.txt", "r");
rcBytesNotEmpty = 1;
while (rcBytesNotEmpty) begin
rcBytesNotEmpty = $fgets(rcBytesStr, fdRcBytes);
if (rcBytesNotEmpty) begin
dummy = $sscanf(rcBytesStr, "%x", currRcByte);
recvByte(currRcByte);
end
end
// Wrap it up.
SPI_SS = 1;
#1000;
$finish;
end
endmodule
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment