URL
https://opencores.org/ocsvn/eco32/eco32/trunk
Subversion Repositories eco32
Compare Revisions
- This comparison shows the changes necessary to convert path
/eco32/trunk
- from Rev 317 to Rev 318
- ↔ Reverse comparison
Rev 317 → Rev 318
/fpga/experiments/memctrl/fpga/memctrl-1/build/memtest.xise
0,0 → 1,355
<?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-2013 Xilinx, Inc. All rights reserved. --> |
</header> |
|
<version xil_pn:ise_version="14.7" xil_pn:schema_version="2"/> |
|
<files> |
<file xil_pn:name="../src/toplevel/memtest.v" xil_pn:type="FILE_VERILOG"> |
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="1"/> |
<association xil_pn:name="Implementation" xil_pn:seqID="4"/> |
</file> |
<file xil_pn:name="../src/toplevel/memtest.ucf" xil_pn:type="FILE_UCF"> |
<association xil_pn:name="Implementation" xil_pn:seqID="0"/> |
</file> |
<file xil_pn:name="../src/clk_rst/clk_rst.v" xil_pn:type="FILE_VERILOG"> |
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="3"/> |
<association xil_pn:name="Implementation" xil_pn:seqID="3"/> |
</file> |
<file xil_pn:name="../src/ramctrl/ramctrl.v" xil_pn:type="FILE_VERILOG"> |
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="4"/> |
<association xil_pn:name="Implementation" xil_pn:seqID="2"/> |
</file> |
<file xil_pn:name="../src/ramtest/ramtest.v" xil_pn:type="FILE_VERILOG"> |
<association xil_pn:name="BehavioralSimulation" xil_pn:seqID="5"/> |
<association xil_pn:name="Implementation" xil_pn:seqID="1"/> |
</file> |
</files> |
|
<properties> |
<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="true" xil_pn:valueState="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="<>" xil_pn:valueState="default"/> |
<property xil_pn:name="CLB Pack Factor Percentage" xil_pn:value="100" 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="-4" xil_pn:valueState="default"/> |
<property xil_pn:name="Change Device Speed To Post Trace" xil_pn:value="-4" 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 Clk (Configuration Pins)" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Pin Done" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Pin HSWAPEN" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Pin M0" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Pin M1" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Pin M2" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Pin Program" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Configuration Rate" xil_pn:value="Default (6)" 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" 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="DCI Update Mode" xil_pn:value="As Required" xil_pn:valueState="default"/> |
<property xil_pn:name="DSP Utilization Ratio" xil_pn:value="100" xil_pn:valueState="default"/> |
<property xil_pn:name="Decoder Extraction" xil_pn:value="true" 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="xc3s1000" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Device Family" xil_pn:value="Spartan3" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Device Speed Grade/Select ABS Minimum" xil_pn:value="-4" 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 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)" 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 Internal Done Pipe" xil_pn:value="true" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Enable Message Filtering" 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 Outputs (Output Events)" xil_pn:value="Default (5)" 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 Effort" xil_pn:value="None" 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="JTAG Clock" xil_pn:valueState="non-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="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 & Route Power Report" xil_pn:value="false" xil_pn:valueState="default"/> |
<property xil_pn:name="Generate Post-Place & 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 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="Module|memtest" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Implementation Top File" xil_pn:value="../src/toplevel/memtest.v" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Implementation Top Instance Path" xil_pn:value="/memtest" 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="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="JTAG Pin TDI" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="JTAG Pin TDO" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="JTAG Pin TMS" xil_pn:value="Float" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Keep Hierarchy" xil_pn:value="No" 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="Logical Shifter Extraction" 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 Effort Level" xil_pn:value="High" 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="Max Fanout" xil_pn:value="100000" xil_pn:valueState="non-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="Multiplier Style" xil_pn:value="Auto" xil_pn:valueState="default"/> |
<property xil_pn:name="Mux Extraction" xil_pn:value="Yes" xil_pn:valueState="default"/> |
<property xil_pn:name="Mux Style" xil_pn:value="Auto" 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="8" 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 Goal" xil_pn:value="Speed" xil_pn:valueState="default"/> |
<property xil_pn:name="Optimization Strategy (Cover Mode)" xil_pn:value="Area" 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" 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 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 & 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="memtest" 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="ft256" 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 & 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="Placer Effort Level (Overrides Overall Level)" 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="memtest_map.v" xil_pn:valueState="default"/> |
<property xil_pn:name="Post Place & Route Simulation Model Name" xil_pn:value="memtest_timesim.v" xil_pn:valueState="default"/> |
<property xil_pn:name="Post Synthesis Simulation Model Name" xil_pn:value="memtest_synthesis.v" xil_pn:valueState="default"/> |
<property xil_pn:name="Post Translate Simulation Model Name" xil_pn:value="memtest_translate.v" xil_pn:valueState="default"/> |
<property xil_pn:name="Power Reduction Map" xil_pn:value="false" xil_pn:valueState="default"/> |
<property xil_pn:name="Power Reduction Par" 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="Priority Encoder Extraction" xil_pn:value="Yes" 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="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" 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="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 DCM if SHUTDOWN & AGHIGH performed" xil_pn:value="false" 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="Revision Select" xil_pn:value="00" xil_pn:valueState="default"/> |
<property xil_pn:name="Revision Select Tristate" xil_pn:value="Disable" xil_pn:valueState="default"/> |
<property xil_pn:name="Router Effort Level (Overrides Overall Level)" xil_pn:value="None" 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 Simulation Root Source Node Behavioral" xil_pn:value="" xil_pn:valueState="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="Shift Register Extraction" xil_pn:value="true" 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="1000 ns" xil_pn:valueState="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 Packing" xil_pn:value="true" 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="Default" 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="-4" xil_pn:valueState="non-default"/> |
<property xil_pn:name="Starting Placer Cost Table (1-100) Map" xil_pn:value="1" xil_pn:valueState="default"/> |
<property xil_pn:name="Starting Placer Cost Table (1-100) Par" 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="Non Timing Driven" 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="Float" xil_pn:valueState="non-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="Yes" 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="false" xil_pn:valueState="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 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="Yes" xil_pn:valueState="default"/> |
<property xil_pn:name="Use Synchronous Set" xil_pn:value="Yes" 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="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 DCI Match (Output Events) virtex2" xil_pn:value="Auto" xil_pn:valueState="default"/> |
<property xil_pn:name="Wait for DLL Lock (Output Events)" xil_pn:value="Default (NoWait)" 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"/> |
<property xil_pn:name="XOR Collapsing" xil_pn:value="true" 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="" xil_pn:valueState="default"/> |
<property xil_pn:name="PROP_DesignName" xil_pn:value="memtest" xil_pn:valueState="non-default"/> |
<property xil_pn:name="PROP_DevFamilyPMName" xil_pn:value="spartan3" xil_pn:valueState="default"/> |
<property xil_pn:name="PROP_FPGAConfiguration" xil_pn:value="FPGAConfiguration" 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="2015-08-21T08:14:47" xil_pn:valueState="non-default"/> |
<property xil_pn:name="PROP_intWbtProjectID" xil_pn:value="284BCA36502DBDE5BA6B74DC6535E681" 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> |
/fpga/experiments/memctrl/fpga/memctrl-1/build/memtest.bit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
fpga/experiments/memctrl/fpga/memctrl-1/build/memtest.bit
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: fpga/experiments/memctrl/fpga/memctrl-1/src/ramtest/ramtest.v
===================================================================
--- fpga/experiments/memctrl/fpga/memctrl-1/src/ramtest/ramtest.v (nonexistent)
+++ fpga/experiments/memctrl/fpga/memctrl-1/src/ramtest/ramtest.v (revision 318)
@@ -0,0 +1,262 @@
+//
+// ramtest.v -- RAM test generator
+//
+
+
+`timescale 1ns/10ps
+`default_nettype none
+
+
+//`define SIMULATE
+//`define VERBOSE
+
+`define INST_PERIOD 31
+`define INST_PHASE 19
+`define DATA_PERIOD 17
+`define DATA_PHASE 7
+
+
+//
+// memory test generator
+//
+// Algorithm: Three independent address/data generators
+// produce exactly the same sequence of address/data pairs,
+// although at different times: data write, data read, and
+// instruction read. Three out of four data cycles are writes,
+// one is a read. Instruction reads are also less frequent
+// than data writes: 1/31 < 1/17 * 3/4. The writing process
+// is therefore always ahead of the reading processes, with
+// an increasing gap in between.
+//
+
+module ramtest(clk, rst,
+ inst_stb, inst_addr,
+ inst_din, inst_ack,
+ data_stb, data_we, data_addr,
+ data_dout, data_din, data_ack,
+ test_ended, test_error);
+ input clk;
+ input rst;
+ output reg inst_stb;
+ output [25:0] inst_addr;
+ input [63:0] inst_din;
+ input inst_ack;
+ output reg data_stb;
+ output reg data_we;
+ output [25:0] data_addr;
+ output [63:0] data_dout;
+ input [63:0] data_din;
+ input data_ack;
+ output test_ended;
+ output test_error;
+
+ reg [4:0] inst_timer;
+ reg [4:0] data_timer;
+ reg [9:0] data_counter;
+
+ wire ir_next;
+ wire [21:0] ir_a;
+ wire [63:0] ir_d;
+
+ wire dw_next;
+ wire [21:0] dw_a;
+ wire [63:0] dw_d;
+
+ wire dr_next;
+ wire [21:0] dr_a;
+ wire [63:0] dr_d;
+
+`ifdef SIMULATE
+ reg error_1;
+ reg error_3;
+`endif
+ reg error_2;
+ reg error_4;
+
+ always @(posedge clk) begin
+ if (rst) begin
+ inst_timer <= 0;
+ inst_stb <= 0;
+`ifdef SIMULATE
+ error_1 <= 0;
+`endif
+ error_2 <= 0;
+ end else begin
+ if (~test_ended) begin
+ if (~inst_stb) begin
+ if (inst_timer == `INST_PERIOD - 1) begin
+ inst_timer <= 0;
+ end else begin
+ inst_timer <= inst_timer + 1;
+ end
+ if (inst_timer == `INST_PHASE) begin
+ inst_stb <= 1;
+ end
+ end else begin
+ if (inst_ack) begin
+ inst_stb <= 0;
+`ifdef SIMULATE
+`ifdef VERBOSE
+ $display("%t: inst read @ 0x%h", $realtime, ir_a);
+ $display(" value = 0x%h", inst_din);
+`endif
+ if (^inst_din[63:0] === 1'bx) begin
+ $display("Warning: Input data has don't cares at %t",
+ $realtime);
+ error_1 <= 1;
+ end
+`endif
+ if (inst_din[63:0] != ir_d[63:0]) begin
+ error_2 <= 1;
+ end
+ end
+ end
+ end
+ end
+ end
+
+ adgen adgen_ir(
+ .clk(clk),
+ .rst(rst),
+ .next(ir_next),
+ .addr(ir_a),
+ .data(ir_d)
+ );
+
+ assign ir_next = inst_ack;
+ assign inst_addr[25:0] = { 4'h0, ir_a[21:0] };
+
+ always @(posedge clk) begin
+ if (rst) begin
+ data_timer <= 0;
+ data_stb <= 0;
+ data_we <= 0;
+ data_counter <= 0;
+`ifdef SIMULATE
+ error_3 <= 0;
+`endif
+ error_4 <= 0;
+ end else begin
+ if (~test_ended) begin
+ if (~data_stb) begin
+ if (data_timer == `DATA_PERIOD - 1) begin
+ data_timer <= 0;
+ end else begin
+ data_timer <= data_timer + 1;
+ end
+ if (data_timer == `DATA_PHASE) begin
+ data_stb <= 1;
+ data_we <= ~&data_counter[1:0];
+ end
+ end else begin
+ if (data_ack) begin
+ data_stb <= 0;
+ data_we <= 0;
+ data_counter <= data_counter + 1;
+`ifdef SIMULATE
+`ifdef VERBOSE
+ if (data_we == 1) begin
+ $display("%t: data write @ 0x%h", $realtime, dw_a);
+ $display(" value = 0x%h", dw_d);
+ end else begin
+ $display("%t: data read @ 0x%h", $realtime, dr_a);
+ $display(" value = 0x%h", data_din);
+ end
+`endif
+ if (data_we == 0 &&
+ ^data_din[63:0] === 1'bx) begin
+ $display("Warning: Input data has don't cares at %t",
+ $realtime);
+ error_3 <= 1;
+ end
+`endif
+ if (data_we == 0 &&
+ data_din[63:0] != dr_d[63:0]) begin
+ error_4 <= 1;
+ end
+ end
+ end
+ end
+ end
+ end
+
+ adgen adgen_dw(
+ .clk(clk),
+ .rst(rst),
+ .next(dw_next),
+ .addr(dw_a),
+ .data(dw_d)
+ );
+
+ adgen adgen_dr(
+ .clk(clk),
+ .rst(rst),
+ .next(dr_next),
+ .addr(dr_a),
+ .data(dr_d)
+ );
+
+ assign dw_next = data_ack & data_we;
+ assign dr_next = data_ack & ~data_we;
+ assign data_addr[25:0] = { 4'h0, data_we ? dw_a[21:0] : dr_a[21:0] };
+ assign data_dout[63:0] = dw_d[63:0];
+
+ assign test_ended = &data_counter[9:0];
+
+`ifdef SIMULATE
+ assign test_error = error_1 | error_2 | error_3 | error_4;
+`else
+ assign test_error = error_2 | error_4;
+`endif
+
+endmodule
+
+
+//
+// address & data generator
+//
+// compute pseudo-random 32-bit address
+// and 64-bit data on request
+//
+
+module adgen(clk, rst,
+ next, addr, data);
+ input clk;
+ input rst;
+ input next;
+ output [21:0] addr;
+ output [63:0] data;
+
+ reg [31:0] a;
+ reg [63:0] d;
+
+ always @(posedge clk) begin
+ if (rst) begin
+ a[31: 0] <= 32'hC70337DB;
+ d[63:32] <= 32'h7F4D514F;
+ d[31: 0] <= 32'h75377599;
+ end else begin
+ if (next) begin
+ if (a[0] == 0) begin
+ a[31:0] <= a[31:0] >> 1;
+ end else begin
+ a[31:0] <= (a[31:0] >> 1) ^ 32'hD0000001;
+ end
+ if (d[32] == 0) begin
+ d[63:32] <= d[63:32] >> 1;
+ end else begin
+ d[63:32] <= (d[63:32] >> 1) ^ 32'hD0000001;
+ end
+ if (d[0] == 0) begin
+ d[31:0] <= d[31:0] >> 1;
+ end else begin
+ d[31:0] <= (d[31:0] >> 1) ^ 32'hD0000001;
+ end
+ end
+ end
+ end
+
+ assign addr[21:0] = a[21:0];
+ assign data[63:0] = d[63:0];
+
+endmodule
Index: fpga/experiments/memctrl/fpga/memctrl-1/src/clk_rst/clk_rst.v
===================================================================
--- fpga/experiments/memctrl/fpga/memctrl-1/src/clk_rst/clk_rst.v (nonexistent)
+++ fpga/experiments/memctrl/fpga/memctrl-1/src/clk_rst/clk_rst.v (revision 318)
@@ -0,0 +1,123 @@
+//
+// clk_rst.v -- clock and reset generator
+//
+
+
+`timescale 1ns/10ps
+`default_nettype none
+
+
+module clk_rst(clk_in, rst_inout_n,
+ sdram_clk, sdram_fb,
+ clk_ok, clk, rst);
+ input clk_in;
+ inout rst_inout_n;
+ output sdram_clk;
+ input sdram_fb;
+ output clk_ok;
+ output clk;
+ output rst;
+
+ wire clk_in_buf;
+ wire int_clk;
+ wire int_locked;
+ wire ext_rst_n;
+ wire ext_fb;
+ wire ext_clk;
+ wire ext_locked;
+
+ wire rst_counting;
+ reg [23:0] rst_counter;
+ reg rst_p_n;
+ reg rst_s_n;
+
+ //
+ // internal DCM, 100 MHz
+ //
+
+ IBUF clk_in_buffer(
+ .I(clk_in),
+ .O(clk_in_buf)
+ );
+
+ DCM int_dcm(
+ .CLKIN(clk_in_buf),
+ .CLKFB(clk),
+ .RST(1'b0),
+ .CLK0(int_clk),
+ .LOCKED(int_locked)
+ );
+
+ BUFG int_clk_buffer(
+ .I(int_clk),
+ .O(clk)
+ );
+
+ //
+ // reset circuit for external DCM
+ //
+
+ SRL16 ext_dll_rst_gen(
+ .CLK(clk_in_buf),
+ .D(int_locked),
+ .Q(ext_rst_n),
+ .A0(1'b1),
+ .A1(1'b1),
+ .A2(1'b1),
+ .A3(1'b1)
+ );
+
+ defparam ext_dll_rst_gen.INIT = 16'h0000;
+
+ //
+ // external DCM, 100 MHz
+ //
+
+ IBUF ext_fb_buffer(
+ .I(sdram_fb),
+ .O(ext_fb)
+ );
+
+ DCM ext_dcm(
+ .CLKIN(clk_in_buf),
+ .CLKFB(ext_fb),
+ .RST(~ext_rst_n),
+ .CLK0(ext_clk),
+ .LOCKED(ext_locked),
+ .PSEN(1'b0),
+ .PSCLK(1'b0),
+ .PSINCDEC(1'b0)
+ );
+
+ defparam ext_dcm.CLKOUT_PHASE_SHIFT = "FIXED";
+ defparam ext_dcm.PHASE_SHIFT = 0;
+
+ OBUF ext_clk_buffer(
+ .I(ext_clk),
+ .O(sdram_clk)
+ );
+
+ assign clk_ok = int_locked & ext_locked;
+
+ //
+ // reset generator
+ //
+
+ assign rst_counting = (rst_counter == 24'hFFFFFF) ? 0 : 1;
+ assign rst_inout_n = (rst_counter[23] == 0) ? 1'b0 : 1'bz;
+
+ always @(posedge clk) begin
+ rst_p_n <= rst_inout_n;
+ rst_s_n <= rst_p_n;
+ if (rst_counting) begin
+ rst_counter <= rst_counter + 1;
+ end else begin
+ if (~rst_s_n | ~clk_ok) begin
+ rst_counter <= 24'h000000;
+ end
+ end
+ end
+
+ assign rst = rst_counting;
+
+endmodule
Index: fpga/experiments/memctrl/fpga/memctrl-1/src/ramctrl/ramctrl.v
===================================================================
--- fpga/experiments/memctrl/fpga/memctrl-1/src/ramctrl/ramctrl.v (nonexistent)
+++ fpga/experiments/memctrl/fpga/memctrl-1/src/ramctrl/ramctrl.v (revision 318)
@@ -0,0 +1,533 @@
+//
+// ramctrl.v -- RAM controller
+//
+
+
+`timescale 1ns/10ps
+`default_nettype none
+
+
+`define MODE 13'h0032 // CL = 3, sequ. burst length = 4
+
+`define CMD_MRSET 3'b000 // mode register set
+`define CMD_ARFRS 3'b001 // auto refresh
+`define CMD_PRCHG 3'b010 // precharge (deactivate row/rows)
+`define CMD_ACTV 3'b011 // select bank, activate row
+`define CMD_WRITE 3'b100 // select bank & column, start write
+`define CMD_READ 3'b101 // select bank & column, start read
+`define CMD_BSTOP 3'b110 // burst stop
+`define CMD_NOP 3'b111 // no operation
+
+//
+// Note: The FSM is a registered Mealy machine. Its actions, which
+// are noted here for a specific state, take place in the next
+// clock cycle. This is only a notational problem: the actions
+// should in fact be associated with state transitions.
+//
+// ST_RESET // NOP, CKE=0, CS_N=1, wait 100 us
+`define ST_INIT0 5'd0 // NOP, CKE=1, CS_N=0, wait 100 us
+`define ST_INIT1 5'd1 // PRECHARGE ALL
+`define ST_INIT2 5'd2 // NOP, wait tRP - 1 cycle
+`define ST_INIT3 5'd3 // AUTO REFRESH
+`define ST_INIT4 5'd4 // NOP, wait tRFC - 1 cycle
+`define ST_INIT5 5'd5 // AUTO REFRESH
+`define ST_INIT6 5'd6 // NOP, wait tRFC - 1 cycle
+`define ST_INIT7 5'd7 // MODE REGISTER SET
+`define ST_INIT8 5'd8 // NOP, wait tMRD - 1 cycle
+`define ST_IDLE 5'd9 // AUTO REFRESH, ACTIVE, or NOP
+`define ST_RFRSH 5'd10 // NOP, wait tRFC - 1 cycle
+`define ST_WRDATA0 5'd11 // NOP, wait tRCD - 1 cycle
+`define ST_WRDATA1 5'd12 // WRITE, de=1
+`define ST_WRDATA2 5'd13 // NOP, wait 3 cycles
+`define ST_WRDATA3 5'd14 // NOP, ack=1, de=0
+`define ST_WRDATA4 5'd15 // NOP, ack=0, wait 3 cycles
+`define ST_RDDATA0 5'd16 // NOP, wait tRCD - 1 cycle
+`define ST_RDDATA1 5'd17 // READ
+`define ST_RDDATA2 5'd18 // NOP, wait 2 cycles
+`define ST_RDDATA3 5'd19 // NOP, ld=1, wait 4 cycles
+`define ST_RDDATA4 5'd20 // NOP, ack=1, ld=0
+`define ST_RDDATA5 5'd21 // NOP, ack=0, wait 4 cycles
+`define ST_RDINST0 5'd22 // NOP, wait tRCD - 1 cycle
+`define ST_RDINST1 5'd23 // READ
+`define ST_RDINST2 5'd24 // NOP, wait 2 cycles
+`define ST_RDINST3 5'd25 // NOP, ld=1, wait 4 cycles
+`define ST_RDINST4 5'd26 // NOP, ack=1, ld=0
+`define ST_RDINST5 5'd27 // NOP, ack=0, wait 4 cycles
+`define ST_ILLDA0 5'd28 // NOP, data_timeout=1
+`define ST_ILLDA1 5'd29 // NOP, data_timeout=0
+`define ST_ILLIA0 5'd30 // NOP, inst_timeout=1
+`define ST_ILLIA1 5'd31 // NOP, inst_timeout=0
+
+`define T_INIT0 14'd10000 // min 100 usec with CKE = 0
+`define T_INIT1 14'd10000 // min 100 usec with CKE = 1
+`define T_RP 14'd3 // min 20 ns row precharge time
+`define T_RFC 14'd9 // min 66 ns auto refresh period
+`define T_MRD 14'd3 // min load mode register delay
+`define T_RCD 14'd3 // min 20 ns active-to-rw delay
+
+`define REFCNT 10'd780 // 8192 refresh cycles per 64 ms
+
+
+module ramctrl(clk_ok, clk,
+ inst_stb, inst_addr,
+ inst_dout, inst_ack,
+ inst_timeout,
+ data_stb, data_we,
+ data_addr, data_din,
+ data_dout, data_ack,
+ data_timeout,
+ sdram_cke, sdram_cs_n,
+ sdram_ras_n, sdram_cas_n,
+ sdram_we_n, sdram_ba, sdram_a,
+ sdram_udqm, sdram_ldqm, sdram_dq);
+ // internal interface signals
+ input clk_ok;
+ input clk;
+ input inst_stb;
+ input [25:0] inst_addr;
+ output [63:0] inst_dout;
+ output reg inst_ack;
+ output reg inst_timeout;
+ input data_stb;
+ input data_we;
+ input [25:0] data_addr;
+ input [63:0] data_din;
+ output [63:0] data_dout;
+ output reg data_ack;
+ output reg data_timeout;
+ // external interface signals
+ output reg sdram_cke;
+ output reg sdram_cs_n;
+ output sdram_ras_n;
+ output sdram_cas_n;
+ output sdram_we_n;
+ output reg [1:0] sdram_ba;
+ output reg [12:0] sdram_a;
+ output sdram_udqm;
+ output sdram_ldqm;
+ inout [15:0] sdram_dq;
+
+ reg [1:0] ram_cnt;
+ wire [15:0] ram_dout;
+ reg ram_de;
+ reg [63:0] data;
+ reg data_ld;
+
+ wire inst_addr_out_of_range;
+ wire data_addr_out_of_range;
+
+ reg [2:0] ram_cmd;
+ reg [1:0] ram_dqm;
+ reg [13:0] count;
+ reg [4:0] state;
+
+ reg [9:0] refcnt;
+ reg refflg;
+ reg refrst;
+
+ //
+ // data output to ram
+ //
+
+ assign ram_dout[15:0] =
+ ~ram_cnt[1] ? (~ram_cnt[0] ? data_din[63:48] : data_din[47:32]) :
+ (~ram_cnt[0] ? data_din[31:16] : data_din[15: 0]);
+ assign sdram_dq[15:0] = ram_de ? ram_dout[15:0] : 16'hzzzz;
+
+ //
+ // data output to cache
+ //
+
+ always @(posedge clk) begin
+ if (data_ld & (ram_cnt[1:0] == 2'b00)) begin
+ data[63:48] <= sdram_dq[15:0];
+ end
+ if (data_ld & (ram_cnt[1:0] == 2'b01)) begin
+ data[47:32] <= sdram_dq[15:0];
+ end
+ if (data_ld & (ram_cnt[1:0] == 2'b10)) begin
+ data[31:16] <= sdram_dq[15:0];
+ end
+ if (data_ld & (ram_cnt[1:0] == 2'b11)) begin
+ data[15: 0] <= sdram_dq[15:0];
+ end
+ end
+
+ assign inst_dout[63:0] = data[63:0];
+ assign data_dout[63:0] = data[63:0];
+
+ //
+ // address range check
+ //
+
+ assign inst_addr_out_of_range = | inst_addr[25:22];
+ assign data_addr_out_of_range = | data_addr[25:22];
+
+ //
+ // ramctrl state machine
+ //
+
+ assign sdram_ras_n = ram_cmd[2];
+ assign sdram_cas_n = ram_cmd[1];
+ assign sdram_we_n = ram_cmd[0];
+
+ assign sdram_udqm = ram_dqm[1];
+ assign sdram_ldqm = ram_dqm[0];
+
+ always @(posedge clk or negedge clk_ok) begin
+ // asynchronous reset
+ if (~clk_ok) begin
+ inst_ack <= 0;
+ inst_timeout <= 0;
+ data_ack <= 0;
+ data_timeout <= 0;
+ sdram_cke <= 0;
+ sdram_cs_n <= 1;
+ ram_cnt <= 0;
+ ram_de <= 0;
+ data_ld <= 0;
+ ram_cmd <= `CMD_NOP;
+ ram_dqm <= 2'b11;
+ count <= `T_INIT0 - 1;
+ state <= `ST_INIT0;
+ refrst <= 0;
+ end else begin
+ if (|count[13:0]) begin
+ // wait until count = 0
+ // if count is loaded with N on a state transition, the
+ // new state will last for (N+1)/fclk cycles before (!)
+ // any action specified in the new state will take place
+ count <= count - 1;
+ // ram_cnt cycles through the 16-bit half-words in SDRAM
+ // during burst read/writes while the main state machine
+ // waits, thus it must be incremented here
+ ram_cnt <= ram_cnt + 1;
+ end else begin
+ case (state)
+ //----------------------------
+ // init
+ //----------------------------
+ `ST_INIT0:
+ begin
+ sdram_cke <= 1;
+ sdram_cs_n <= 0;
+ ram_cmd <= `CMD_NOP;
+ count <= `T_INIT1 - 1;
+ state <= `ST_INIT1;
+ end
+ `ST_INIT1:
+ begin
+ ram_cmd <= `CMD_PRCHG;
+ sdram_ba <= 2'b00; // don't care
+ sdram_a <= 13'h0400; // precharge all
+ state <= `ST_INIT2;
+ end
+ `ST_INIT2:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RP - 2;
+ state <= `ST_INIT3;
+ end
+ `ST_INIT3:
+ begin
+ ram_cmd <= `CMD_ARFRS;
+ state <= `ST_INIT4;
+ end
+ `ST_INIT4:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RFC - 2;
+ state <= `ST_INIT5;
+ end
+ `ST_INIT5:
+ begin
+ ram_cmd <= `CMD_ARFRS;
+ state <= `ST_INIT6;
+ end
+ `ST_INIT6:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RFC - 2;
+ state <= `ST_INIT7;
+ end
+ `ST_INIT7:
+ begin
+ ram_cmd <= `CMD_MRSET;
+ sdram_ba <= 2'b00;
+ sdram_a <= `MODE;
+ state <= `ST_INIT8;
+ end
+ `ST_INIT8:
+ begin
+ ram_cmd <= `CMD_NOP;
+ ram_dqm <= 2'b00;
+ count <= `T_MRD - 2;
+ state <= `ST_IDLE;
+ end
+ //----------------------------
+ // idle
+ //----------------------------
+ `ST_IDLE:
+ begin
+ if (refflg) begin
+ // refresh request
+ ram_cmd <= `CMD_ARFRS;
+ state <= `ST_RFRSH;
+ refrst <= 1;
+ end else begin
+ if (data_stb) begin
+ if (data_addr_out_of_range) begin
+ // illegal data address
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_ILLDA0;
+ end else begin
+ // data address is ok
+ if (data_we) begin
+ // data write request
+ ram_cmd <= `CMD_ACTV;
+ sdram_ba <= data_addr[21:20];
+ sdram_a <= data_addr[19:7];
+ state <= `ST_WRDATA0;
+ end else begin
+ // data read request
+ ram_cmd <= `CMD_ACTV;
+ sdram_ba <= data_addr[21:20];
+ sdram_a <= data_addr[19:7];
+ state <= `ST_RDDATA0;
+ end
+ end
+ end else begin
+ if (inst_stb) begin
+ if (inst_addr_out_of_range) begin
+ // illegal inst address
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_ILLIA0;
+ end else begin
+ // inst address is ok
+ // inst read request
+ ram_cmd <= `CMD_ACTV;
+ sdram_ba <= inst_addr[21:20];
+ sdram_a <= inst_addr[19:7];
+ state <= `ST_RDINST0;
+ end
+ end else begin
+ // no request
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_IDLE;
+ end
+ end
+ end
+ end
+ //----------------------------
+ // refresh
+ //----------------------------
+ `ST_RFRSH:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RFC - 2;
+ state <= `ST_IDLE;
+ refrst <= 0;
+ end
+ //----------------------------
+ // write data
+ //----------------------------
+ `ST_WRDATA0:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RCD - 2;
+ state <= `ST_WRDATA1;
+ end
+ `ST_WRDATA1:
+ begin
+ ram_cnt <= 0;
+ ram_de <= 1;
+ ram_cmd <= `CMD_WRITE;
+ sdram_ba <= data_addr[21:20];
+ sdram_a <= { 6'b0010, data_addr[6:0], 2'b00 };
+ state <= `ST_WRDATA2;
+ end
+ `ST_WRDATA2:
+ begin
+ ram_cnt <= ram_cnt + 1;
+ ram_cmd <= `CMD_NOP;
+ count <= 2;
+ state <= `ST_WRDATA3;
+ end
+ `ST_WRDATA3:
+ begin
+ data_ack <= 1;
+ ram_de <= 0;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_WRDATA4;
+ end
+ `ST_WRDATA4:
+ begin
+ data_ack <= 0;
+ ram_cmd <= `CMD_NOP;
+ count <= 2;
+ state <= `ST_IDLE;
+ end
+ //----------------------------
+ // read data
+ //----------------------------
+ `ST_RDDATA0:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RCD - 2;
+ state <= `ST_RDDATA1;
+ end
+ `ST_RDDATA1:
+ begin
+ ram_cmd <= `CMD_READ;
+ sdram_ba <= data_addr[21:20];
+ sdram_a <= { 6'b0010, data_addr[6:0], 2'b00 };
+ state <= `ST_RDDATA2;
+ end
+ `ST_RDDATA2:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= 1;
+ state <= `ST_RDDATA3;
+ end
+ `ST_RDDATA3:
+ begin
+ ram_cnt <= 0;
+ data_ld <= 1;
+ ram_cmd <= `CMD_NOP;
+ count <= 3;
+ state <= `ST_RDDATA4;
+ end
+ `ST_RDDATA4:
+ begin
+ data_ack <= 1;
+ data_ld <= 0;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_RDDATA5;
+ end
+ `ST_RDDATA5:
+ begin
+ data_ack <= 0;
+ ram_cmd <= `CMD_NOP;
+ count <= 3;
+ state <= `ST_IDLE;
+ end
+ //----------------------------
+ // read inst
+ //----------------------------
+ `ST_RDINST0:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= `T_RCD - 2;
+ state <= `ST_RDINST1;
+ end
+ `ST_RDINST1:
+ begin
+ ram_cmd <= `CMD_READ;
+ sdram_ba <= inst_addr[21:20];
+ sdram_a <= { 6'b0010, inst_addr[6:0], 2'b00 };
+ state <= `ST_RDINST2;
+ end
+ `ST_RDINST2:
+ begin
+ ram_cmd <= `CMD_NOP;
+ count <= 1;
+ state <= `ST_RDINST3;
+ end
+ `ST_RDINST3:
+ begin
+ ram_cnt <= 0;
+ data_ld <= 1;
+ ram_cmd <= `CMD_NOP;
+ count <= 3;
+ state <= `ST_RDINST4;
+ end
+ `ST_RDINST4:
+ begin
+ inst_ack <= 1;
+ data_ld <= 0;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_RDINST5;
+ end
+ `ST_RDINST5:
+ begin
+ inst_ack <= 0;
+ ram_cmd <= `CMD_NOP;
+ count <= 3;
+ state <= `ST_IDLE;
+ end
+ //----------------------------
+ // illegal data address
+ //----------------------------
+ `ST_ILLDA0:
+ begin
+ data_timeout <= 1;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_ILLDA1;
+ end
+ `ST_ILLDA1:
+ begin
+ data_timeout <= 0;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_IDLE;
+ end
+ //----------------------------
+ // illegal inst address
+ //----------------------------
+ `ST_ILLIA0:
+ begin
+ inst_timeout <= 1;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_ILLIA1;
+ end
+ `ST_ILLIA1:
+ begin
+ inst_timeout <= 0;
+ ram_cmd <= `CMD_NOP;
+ state <= `ST_IDLE;
+ end
+ //----------------------------
+ // not used
+ //----------------------------
+ default:
+ begin
+ inst_ack <= 0;
+ inst_timeout <= 0;
+ data_ack <= 0;
+ data_timeout <= 0;
+ sdram_cke <= 0;
+ sdram_cs_n <= 1;
+ ram_cnt <= 0;
+ ram_de <= 0;
+ data_ld <= 0;
+ ram_cmd <= `CMD_NOP;
+ ram_dqm <= 2'b11;
+ count <= `T_INIT0 - 1;
+ state <= `ST_INIT0;
+ refrst <= 0;
+ end
+ endcase
+ end
+ end
+ end
+
+ //
+ // refresh counter
+ //
+
+ always @(posedge clk or negedge clk_ok) begin
+ if (~clk_ok) begin
+ refcnt <= 10'd0;
+ end else begin
+ if (refcnt == 10'd0) begin
+ refcnt <= `REFCNT;
+ refflg <= 1;
+ end else begin
+ refcnt <= refcnt - 1;
+ if (refrst) begin
+ refflg <= 0;
+ end
+ end
+ end
+ end
+
+endmodule
Index: fpga/experiments/memctrl/fpga/memctrl-1/src/toplevel/memtest.v
===================================================================
--- fpga/experiments/memctrl/fpga/memctrl-1/src/toplevel/memtest.v (nonexistent)
+++ fpga/experiments/memctrl/fpga/memctrl-1/src/toplevel/memtest.v (revision 318)
@@ -0,0 +1,137 @@
+//
+// memtest.v -- top-level for memory test
+//
+
+
+`timescale 1ns/10ps
+`default_nettype none
+
+
+module memtest(clk_in,
+ rst_inout_n,
+ sdram_clk,
+ sdram_fb,
+ sdram_cke,
+ sdram_cs_n,
+ sdram_ras_n,
+ sdram_cas_n,
+ sdram_we_n,
+ sdram_ba,
+ sdram_a,
+ sdram_udqm,
+ sdram_ldqm,
+ sdram_dq,
+ ssl);
+
+ // clock and reset
+ input clk_in;
+ inout rst_inout_n;
+ // SDRAM
+ output sdram_clk;
+ input sdram_fb;
+ output sdram_cke;
+ output sdram_cs_n;
+ output sdram_ras_n;
+ output sdram_cas_n;
+ output sdram_we_n;
+ output [1:0] sdram_ba;
+ output [12:0] sdram_a;
+ output sdram_udqm;
+ output sdram_ldqm;
+ inout [15:0] sdram_dq;
+ // 7 segment LED output
+ output [6:0] ssl;
+
+ // clk_rst
+ wire clk_ok;
+ wire clk;
+ wire rst;
+ // ramctrl
+ wire inst_stb;
+ wire [25:0] inst_addr;
+ wire [63:0] inst_to_test;
+ wire inst_ack;
+ wire inst_timeout;
+ wire data_stb;
+ wire data_we;
+ wire [25:0] data_addr;
+ wire [63:0] data_to_ram;
+ wire [63:0] data_to_test;
+ wire data_ack;
+ wire data_timeout;
+ // ramtest
+ wire test_ended;
+ wire test_error;
+ reg [25:0] heartbeat;
+
+ //
+ // module instances
+ //
+
+ clk_rst clk_rst_1(
+ .clk_in(clk_in),
+ .rst_inout_n(rst_inout_n),
+ .sdram_clk(sdram_clk),
+ .sdram_fb(sdram_fb),
+ .clk_ok(clk_ok),
+ .clk(clk),
+ .rst(rst)
+ );
+
+ ramctrl ramctrl_1(
+ .clk_ok(clk_ok),
+ .clk(clk),
+ .inst_stb(inst_stb),
+ .inst_addr({ test_ended ^ inst_addr[25], inst_addr[24:0] }),
+ .inst_dout(inst_to_test[63:0]),
+ .inst_ack(inst_ack),
+ .inst_timeout(inst_timeout),
+ .data_stb(data_stb),
+ .data_we(data_we),
+ .data_addr({ test_ended ^ data_addr[25], data_addr[24:0] }),
+ .data_din(data_to_ram[63:0]),
+ .data_dout(data_to_test[63:0]),
+ .data_ack(data_ack),
+ .data_timeout(data_timeout),
+ .sdram_cke(sdram_cke),
+ .sdram_cs_n(sdram_cs_n),
+ .sdram_ras_n(sdram_ras_n),
+ .sdram_cas_n(sdram_cas_n),
+ .sdram_we_n(sdram_we_n),
+ .sdram_ba(sdram_ba[1:0]),
+ .sdram_a(sdram_a[12:0]),
+ .sdram_udqm(sdram_udqm),
+ .sdram_ldqm(sdram_ldqm),
+ .sdram_dq(sdram_dq[15:0])
+ );
+
+ ramtest ramtest_1(
+ .clk(clk),
+ .rst(rst),
+ .inst_stb(inst_stb),
+ .inst_addr(inst_addr[25:0]),
+ .inst_din(inst_to_test[63:0]),
+ .inst_ack(inst_ack | inst_timeout),
+ .data_stb(data_stb),
+ .data_we(data_we),
+ .data_addr(data_addr[25:0]),
+ .data_dout(data_to_ram[63:0]),
+ .data_din(data_to_test[63:0]),
+ .data_ack(data_ack | data_timeout),
+ .test_ended(test_ended),
+ .test_error(test_error)
+ );
+
+ always @(posedge clk) begin
+ heartbeat <= heartbeat + 1;
+ end
+
+ assign ssl[0] = heartbeat[25];
+ assign ssl[1] = clk_ok;
+ assign ssl[2] = rst;
+ assign ssl[3] = 0;
+ assign ssl[4] = test_ended;
+ assign ssl[5] = test_error;
+ assign ssl[6] = 0;
+
+endmodule
Index: fpga/experiments/memctrl/fpga/memctrl-1/src/toplevel/memtest.ucf
===================================================================
--- fpga/experiments/memctrl/fpga/memctrl-1/src/toplevel/memtest.ucf (nonexistent)
+++ fpga/experiments/memctrl/fpga/memctrl-1/src/toplevel/memtest.ucf (revision 318)
@@ -0,0 +1,65 @@
+#
+# memtest.ucf -- user constraints for XSA-3S1000 + XST-3 board
+#
+
+#
+# clock and reset
+#
+NET "clk_in" PERIOD = 10.0ns HIGH 40%;
+NET "clk_in" LOC = "t9";
+NET "rst_inout_n" LOC = "d15";
+
+#
+# SDRAM
+#
+NET "sdram_clk" LOC = "e10";
+NET "sdram_fb" LOC = "n8";
+NET "sdram_cke" LOC = "d7";
+NET "sdram_cs_n" LOC = "b8";
+NET "sdram_ras_n" LOC = "a9";
+NET "sdram_cas_n" LOC = "a10";
+NET "sdram_we_n" LOC = "b10";
+NET "sdram_ba<1>" LOC = "c7";
+NET "sdram_ba<0>" LOC = "a7";
+NET "sdram_a<12>" LOC = "c6";
+NET "sdram_a<11>" LOC = "c5";
+NET "sdram_a<10>" LOC = "b6";
+NET "sdram_a<9>" LOC = "a3";
+NET "sdram_a<8>" LOC = "c2";
+NET "sdram_a<7>" LOC = "d3";
+NET "sdram_a<6>" LOC = "e4";
+NET "sdram_a<5>" LOC = "c1";
+NET "sdram_a<4>" LOC = "e3";
+NET "sdram_a<3>" LOC = "e6";
+NET "sdram_a<2>" LOC = "b4";
+NET "sdram_a<1>" LOC = "a4";
+NET "sdram_a<0>" LOC = "b5";
+NET "sdram_udqm" LOC = "d9";
+NET "sdram_ldqm" LOC = "c10";
+NET "sdram_dq<15>" LOC = "f13";
+NET "sdram_dq<14>" LOC = "f12";
+NET "sdram_dq<13>" LOC = "c16";
+NET "sdram_dq<12>" LOC = "d14";
+NET "sdram_dq<11>" LOC = "b14";
+NET "sdram_dq<10>" LOC = "c12";
+NET "sdram_dq<9>" LOC = "b12";
+NET "sdram_dq<8>" LOC = "b11";
+NET "sdram_dq<7>" LOC = "d10";
+NET "sdram_dq<6>" LOC = "c11";
+NET "sdram_dq<5>" LOC = "a12";
+NET "sdram_dq<4>" LOC = "d11";
+NET "sdram_dq<3>" LOC = "b13";
+NET "sdram_dq<2>" LOC = "a14";
+NET "sdram_dq<1>" LOC = "d12";
+NET "sdram_dq<0>" LOC = "c15";
+
+#
+# 7 segment LED
+#
+NET "ssl<6>" LOC = "r10";
+NET "ssl<5>" LOC = "t7";
+NET "ssl<4>" LOC = "p10";
+NET "ssl<3>" LOC = "r7";
+NET "ssl<2>" LOC = "n6";
+NET "ssl<1>" LOC = "m11";
+NET "ssl<0>" LOC = "m6";
Index: fpga/experiments/memctrl/fpga/memctrl-1/Makefile
===================================================================
--- fpga/experiments/memctrl/fpga/memctrl-1/Makefile (nonexistent)
+++ fpga/experiments/memctrl/fpga/memctrl-1/Makefile (revision 318)
@@ -0,0 +1,19 @@
+#
+# Makefile for memory test on XESS XSA-XST-3 board
+#
+
+BUILD = ../../../../../build
+
+.PHONY: all install clean
+
+all: build/memtest.bit
+
+install: build/memtest.bit
+
+clean:
+ mv build/memtest.xise .
+ mv build/memtest.bit .
+ rm -rf build/*
+ mv memtest.xise build
+ mv memtest.bit build
+ rm -f *~