Commit e495ff21 authored by Jaco Hofmann's avatar Jaco Hofmann
Browse files

Adds performance counters to BlueDMA

    - Closes #89
    - Adopts DebugScreen accordingly
    - Implements all registers requested in #89 expect for
      * Host read delay
      * FPGA read delay
parent 9b59398d
...@@ -23,6 +23,8 @@ public: ...@@ -23,6 +23,8 @@ public:
for(int i = 0; i < pba_vecs; ++i) { for(int i = 0; i < pba_vecs; ++i) {
intr.pba.push_back(0); intr.pba.push_back(0);
} }
uint64_t accumulated_delay = 199;
platform::platform_write_ctl(0x300000 + 96, sizeof(accumulated_delay), &accumulated_delay, platform::PLATFORM_CTL_FLAGS_RAW);
} }
virtual ~BlueDebugScreen() {} virtual ~BlueDebugScreen() {}
...@@ -54,13 +56,10 @@ protected: ...@@ -54,13 +56,10 @@ protected:
platform::platform_read_ctl(0x300000 + 40, sizeof(dma.status), &dma.status, platform::PLATFORM_CTL_FLAGS_RAW); platform::platform_read_ctl(0x300000 + 40, sizeof(dma.status), &dma.status, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 48, sizeof(dma.read_requests), &dma.read_requests, platform::PLATFORM_CTL_FLAGS_RAW); platform::platform_read_ctl(0x300000 + 48, sizeof(dma.read_requests), &dma.read_requests, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 56, sizeof(dma.write_requests), &dma.write_requests, platform::PLATFORM_CTL_FLAGS_RAW); platform::platform_read_ctl(0x300000 + 56, sizeof(dma.write_requests), &dma.write_requests, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 64, sizeof(dma.ack_count), &dma.ack_count, platform::PLATFORM_CTL_FLAGS_RAW); platform::platform_read_ctl(0x300000 + 64, sizeof(dma.last_request), &dma.last_request, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 120, sizeof(dma.reads_faulty), &dma.reads_faulty, platform::PLATFORM_CTL_FLAGS_RAW); platform::platform_read_ctl(0x300000 + 72, sizeof(dma.cycles_between), &dma.cycles_between, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 128, sizeof(dma.writes_faulty), &dma.writes_faulty, platform::PLATFORM_CTL_FLAGS_RAW); platform::platform_read_ctl(0x300000 + 96, sizeof(dma.cycles_between_set), &dma.cycles_between_set, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 136, sizeof(dma.get_delay), &dma.get_delay, platform::PLATFORM_CTL_FLAGS_RAW); ++dma.cycles_between_set; // Register contains num requests - 1
platform::platform_read_ctl(0x300000 + 144, sizeof(dma.put_delay), &dma.put_delay, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 152, sizeof(dma.last_written), &dma.last_written, platform::PLATFORM_CTL_FLAGS_RAW);
platform::platform_read_ctl(0x300000 + 160, sizeof(dma.last_read), &dma.last_read, platform::PLATFORM_CTL_FLAGS_RAW);
// Update Interrupt data // Update Interrupt data
uint32_t base_addr = 0x500000; uint32_t base_addr = 0x500000;
...@@ -97,13 +96,9 @@ private: ...@@ -97,13 +96,9 @@ private:
uint64_t status; uint64_t status;
uint64_t read_requests; uint64_t read_requests;
uint64_t write_requests; uint64_t write_requests;
uint64_t ack_count; uint64_t last_request;
uint64_t reads_faulty; uint64_t cycles_between;
uint64_t writes_faulty; uint64_t cycles_between_set;
uint64_t get_delay;
uint64_t put_delay;
uint64_t last_written;
uint64_t last_read;
}; };
struct interrupt_data { struct interrupt_data {
...@@ -124,37 +119,33 @@ private: ...@@ -124,37 +119,33 @@ private:
dma_regs dma; dma_regs dma;
intr_regs intr; intr_regs intr;
const int32_t total_interrupts = 64; const int32_t total_interrupts = 131;
void render_dma(int start_row, int start_col) { void render_dma(int start_row, int start_col) {
mvprintw(start_row++, start_col, "Host Address: %016lx, FPGA Address: %016lx", dma.host_addr, dma.fpga_addr); mvprintw(start_row++, start_col, "Host Address: %lx, FPGA Address: %lx", dma.host_addr, dma.fpga_addr);
mvprintw(start_row++, start_col, "Bytes to Transfer: %ld", dma.transfer_length);
mvprintw(start_row++, start_col, "Read requests: %ld, Reads faulty: %ld", dma.read_requests, dma.reads_faulty); mvprintw(start_row++, start_col, "Transfer length: %ld, CMD: %lx", dma.transfer_length, dma.cmd);
mvprintw(start_row++, start_col, "Write requests: %ld, Writes faulty: %ld", dma.write_requests, dma.writes_faulty);
mvprintw(start_row++, start_col, "ACKs: %ld", dma.ack_count); mvprintw(start_row++, start_col, "Read Requests: %ld, Write Requests: %ld", dma.read_requests, dma.write_requests);
mvprintw(start_row++, start_col, "Last written: %lx, Last read: %lx", dma.last_written, dma.last_read); float frequency = 250000000.0f;
uint32_t total_gets = (dma.get_delay & 0xFFFFFFFF); float transfer_ms = (dma.last_request/frequency) * 1000;
uint32_t total_puts = (dma.put_delay & 0xFFFFFFFF); float transfer_mib = ((1000.0f / transfer_ms) * dma.transfer_length) / (1024.0f * 1024.0f);
uint32_t get_delay = (dma.get_delay >> 32); mvprintw(start_row++, start_col, "ms for last request: %f / %f MiB", transfer_ms, transfer_mib);
uint32_t put_delay = (dma.put_delay >> 32); transfer_ms = ((dma.cycles_between/dma.cycles_between_set)/frequency) * 1000;
transfer_mib = ((1000.0f / transfer_ms) * dma.transfer_length) / (1024.0f * 1024.0f);
double get_latency = (double) get_delay / (double) total_gets; mvprintw(start_row++, start_col, "ms averaged over last %ld request(s): %f / %f MiB", dma.cycles_between_set, transfer_ms, transfer_mib);
double put_latency = (double) put_delay / (double) total_puts;
mvprintw(start_row++, start_col, "Put Delay: %f, Total Puts: %d %d", put_latency, total_puts, put_delay);
mvprintw(start_row++, start_col, "Get Delay: %f, Total Gets: %d %d", get_latency, total_gets, get_delay);
} }
void render_msix(int start_row, int start_col) { void render_msix(int start_row, int start_col) {
mvprintw(start_row++, start_col, "Core ID: %x", intr.core_id); mvprintw(start_row++, start_col, "Core ID: %x", intr.core_id);
for(int i = 0; i < total_interrupts; ++i) { for(int i = 0; i < 8; ++i) {
if(!intr.interrupts[i].vector_control) { if(!intr.interrupts[i].vector_control) {
mvprintw(start_row++, start_col, "Interrupt %d Address: %016lx Data: %08x Vector: %08x", i, intr.interrupts[i].addr, intr.interrupts[i].data, intr.interrupts[i].vector_control); mvprintw(start_row++, start_col, "Interrupt %d Address: %016lx Data: %08x Vector: %08x", i, intr.interrupts[i].addr, intr.interrupts[i].data, intr.interrupts[i].vector_control);
} }
} }
int pba_vecs = (total_interrupts / 64) + ((total_interrupts % 64) != 0); int pba_vecs = (total_interrupts / 64) + ((total_interrupts % 64) != 0);
for(int i = 0; i < pba_vecs; ++i) { for(int i = 0; i < pba_vecs; ++i) {
mvprintw(start_row++, start_col, "PBA %d - %d: %16lx", i * 64, i * 64 + 63, intr.pba[i]); mvprintw(start_row++, start_col, "PBA %3d - %3d: %16lx", i * 64, i * 64 + 63, intr.pba[i]);
} }
mvprintw(start_row++, start_col, "Enable: %x Mask: %x", (intr.enableAndMask >> 16) & 0x1, intr.enableAndMask & 0x1); mvprintw(start_row++, start_col, "Enable: %x Mask: %x", (intr.enableAndMask >> 16) & 0x1, intr.enableAndMask & 0x1);
mvprintw(start_row++, start_col, "Sent Interrupts: %d", intr.sentInterrupts); mvprintw(start_row++, start_col, "Sent Interrupts: %d", intr.sentInterrupts);
......
...@@ -175,14 +175,6 @@ ...@@ -175,14 +175,6 @@
<spirit:addressSpaceRef spirit:addressSpaceRef="m32_axi"/> <spirit:addressSpaceRef spirit:addressSpaceRef="m32_axi"/>
</spirit:master> </spirit:master>
<spirit:portMaps> <spirit:portMaps>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>AWID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m32_axi_awid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>AWADDR</spirit:name> <spirit:name>AWADDR</spirit:name>
...@@ -327,14 +319,6 @@ ...@@ -327,14 +319,6 @@
<spirit:name>m32_axi_wready</spirit:name> <spirit:name>m32_axi_wready</spirit:name>
</spirit:physicalPort> </spirit:physicalPort>
</spirit:portMap> </spirit:portMap>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>BID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m32_axi_bid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>BRESP</spirit:name> <spirit:name>BRESP</spirit:name>
...@@ -367,14 +351,6 @@ ...@@ -367,14 +351,6 @@
<spirit:name>m32_axi_bready</spirit:name> <spirit:name>m32_axi_bready</spirit:name>
</spirit:physicalPort> </spirit:physicalPort>
</spirit:portMap> </spirit:portMap>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>ARID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m32_axi_arid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>ARADDR</spirit:name> <spirit:name>ARADDR</spirit:name>
...@@ -471,14 +447,6 @@ ...@@ -471,14 +447,6 @@
<spirit:name>m32_axi_arready</spirit:name> <spirit:name>m32_axi_arready</spirit:name>
</spirit:physicalPort> </spirit:physicalPort>
</spirit:portMap> </spirit:portMap>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>RID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m32_axi_rid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>RDATA</spirit:name> <spirit:name>RDATA</spirit:name>
...@@ -551,14 +519,6 @@ ...@@ -551,14 +519,6 @@
<spirit:addressSpaceRef spirit:addressSpaceRef="m64_axi"/> <spirit:addressSpaceRef spirit:addressSpaceRef="m64_axi"/>
</spirit:master> </spirit:master>
<spirit:portMaps> <spirit:portMaps>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>AWID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m64_axi_awid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>AWADDR</spirit:name> <spirit:name>AWADDR</spirit:name>
...@@ -703,14 +663,6 @@ ...@@ -703,14 +663,6 @@
<spirit:name>m64_axi_wready</spirit:name> <spirit:name>m64_axi_wready</spirit:name>
</spirit:physicalPort> </spirit:physicalPort>
</spirit:portMap> </spirit:portMap>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>BID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m64_axi_bid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>BRESP</spirit:name> <spirit:name>BRESP</spirit:name>
...@@ -743,14 +695,6 @@ ...@@ -743,14 +695,6 @@
<spirit:name>m64_axi_bready</spirit:name> <spirit:name>m64_axi_bready</spirit:name>
</spirit:physicalPort> </spirit:physicalPort>
</spirit:portMap> </spirit:portMap>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>ARID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m64_axi_arid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>ARADDR</spirit:name> <spirit:name>ARADDR</spirit:name>
...@@ -847,14 +791,6 @@ ...@@ -847,14 +791,6 @@
<spirit:name>m64_axi_arready</spirit:name> <spirit:name>m64_axi_arready</spirit:name>
</spirit:physicalPort> </spirit:physicalPort>
</spirit:portMap> </spirit:portMap>
<spirit:portMap>
<spirit:logicalPort>
<spirit:name>RID</spirit:name>
</spirit:logicalPort>
<spirit:physicalPort>
<spirit:name>m64_axi_rid</spirit:name>
</spirit:physicalPort>
</spirit:portMap>
<spirit:portMap> <spirit:portMap>
<spirit:logicalPort> <spirit:logicalPort>
<spirit:name>RDATA</spirit:name> <spirit:name>RDATA</spirit:name>
...@@ -1124,7 +1060,7 @@ ...@@ -1124,7 +1060,7 @@
<spirit:parameters> <spirit:parameters>
<spirit:parameter> <spirit:parameter>
<spirit:name>viewChecksum</spirit:name> <spirit:name>viewChecksum</spirit:name>
<spirit:value>6dca3063</spirit:value> <spirit:value>d8bbcf6d</spirit:value>
</spirit:parameter> </spirit:parameter>
</spirit:parameters> </spirit:parameters>
</spirit:view> </spirit:view>
...@@ -1140,7 +1076,7 @@ ...@@ -1140,7 +1076,7 @@
<spirit:parameters> <spirit:parameters>
<spirit:parameter> <spirit:parameter>
<spirit:name>viewChecksum</spirit:name> <spirit:name>viewChecksum</spirit:name>
<spirit:value>6dca3063</spirit:value> <spirit:value>d8bbcf6d</spirit:value>
</spirit:parameter> </spirit:parameter>
</spirit:parameters> </spirit:parameters>
</spirit:view> </spirit:view>
...@@ -1583,19 +1519,6 @@ ...@@ -1583,19 +1519,6 @@
</spirit:driver> </spirit:driver>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m64_axi_arid</spirit:name>
<spirit:wire>
<spirit:direction>out</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>wire</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m64_axi_araddr</spirit:name> <spirit:name>m64_axi_araddr</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -1787,22 +1710,6 @@ ...@@ -1787,22 +1710,6 @@
</spirit:driver> </spirit:driver>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m64_axi_rid</spirit:name>
<spirit:wire>
<spirit:direction>in</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>std_logic</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
<spirit:driver>
<spirit:defaultValue spirit:format="long">0</spirit:defaultValue>
</spirit:driver>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m64_axi_rdata</spirit:name> <spirit:name>m64_axi_rdata</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -1904,19 +1811,6 @@ ...@@ -1904,19 +1811,6 @@
</spirit:wireTypeDefs> </spirit:wireTypeDefs>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m64_axi_awid</spirit:name>
<spirit:wire>
<spirit:direction>out</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>wire</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m64_axi_awaddr</spirit:name> <spirit:name>m64_axi_awaddr</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -2217,22 +2111,6 @@ ...@@ -2217,22 +2111,6 @@
</spirit:driver> </spirit:driver>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m64_axi_bid</spirit:name>
<spirit:wire>
<spirit:direction>in</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>std_logic</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
<spirit:driver>
<spirit:defaultValue spirit:format="long">0</spirit:defaultValue>
</spirit:driver>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m64_axi_buser</spirit:name> <spirit:name>m64_axi_buser</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -2278,19 +2156,6 @@ ...@@ -2278,19 +2156,6 @@
</spirit:driver> </spirit:driver>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m32_axi_arid</spirit:name>
<spirit:wire>
<spirit:direction>out</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>wire</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m32_axi_araddr</spirit:name> <spirit:name>m32_axi_araddr</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -2482,22 +2347,6 @@ ...@@ -2482,22 +2347,6 @@
</spirit:driver> </spirit:driver>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m32_axi_rid</spirit:name>
<spirit:wire>
<spirit:direction>in</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>std_logic</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
<spirit:driver>
<spirit:defaultValue spirit:format="long">0</spirit:defaultValue>
</spirit:driver>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m32_axi_rdata</spirit:name> <spirit:name>m32_axi_rdata</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -2599,19 +2448,6 @@ ...@@ -2599,19 +2448,6 @@
</spirit:wireTypeDefs> </spirit:wireTypeDefs>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m32_axi_awid</spirit:name>
<spirit:wire>
<spirit:direction>out</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>wire</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m32_axi_awaddr</spirit:name> <spirit:name>m32_axi_awaddr</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -2912,22 +2748,6 @@ ...@@ -2912,22 +2748,6 @@
</spirit:driver> </spirit:driver>
</spirit:wire> </spirit:wire>
</spirit:port> </spirit:port>
<spirit:port>
<spirit:name>m32_axi_bid</spirit:name>
<spirit:wire>
<spirit:direction>in</spirit:direction>
<spirit:wireTypeDefs>
<spirit:wireTypeDef>
<spirit:typeName>std_logic</spirit:typeName>
<spirit:viewNameRef>xilinx_anylanguagesynthesis</spirit:viewNameRef>
<spirit:viewNameRef>xilinx_anylanguagebehavioralsimulation</spirit:viewNameRef>
</spirit:wireTypeDef>
</spirit:wireTypeDefs>
<spirit:driver>
<spirit:defaultValue spirit:format="long">0</spirit:defaultValue>
</spirit:driver>
</spirit:wire>
</spirit:port>
<spirit:port> <spirit:port>
<spirit:name>m32_axi_buser</spirit:name> <spirit:name>m32_axi_buser</spirit:name>
<spirit:wire> <spirit:wire>
...@@ -2976,18 +2796,10 @@ ...@@ -2976,18 +2796,10 @@
<spirit:fileSets> <spirit:fileSets>
<spirit:fileSet> <spirit:fileSet>
<spirit:name>xilinx_anylanguagesynthesis_view_fileset</spirit:name> <spirit:name>xilinx_anylanguagesynthesis_view_fileset</spirit:name>
<spirit:file>
<spirit:name>src/SyncHandshake.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType>
</spirit:file>
<spirit:file> <spirit:file>
<spirit:name>src/SyncFIFO1.v</spirit:name> <spirit:name>src/SyncFIFO1.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType> <spirit:fileType>verilogSource</spirit:fileType>
</spirit:file> </spirit:file>
<spirit:file>
<spirit:name>src/SyncRegister.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType>
</spirit:file>
<spirit:file> <spirit:file>
<spirit:name>src/FIFO1.v</spirit:name> <spirit:name>src/FIFO1.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType> <spirit:fileType>verilogSource</spirit:fileType>
...@@ -3011,23 +2823,15 @@ ...@@ -3011,23 +2823,15 @@
<spirit:file> <spirit:file>
<spirit:name>src/mkBlueDMAVivado.v</spirit:name> <spirit:name>src/mkBlueDMAVivado.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType> <spirit:fileType>verilogSource</spirit:fileType>
<spirit:userFileType>CHECKSUM_031e6e27</spirit:userFileType> <spirit:userFileType>CHECKSUM_ded56ed9</spirit:userFileType>
</spirit:file> </spirit:file>
</spirit:fileSet> </spirit:fileSet>
<spirit:fileSet> <spirit:fileSet>
<spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name> <spirit:name>xilinx_anylanguagebehavioralsimulation_view_fileset</spirit:name>
<spirit:file>
<spirit:name>src/SyncHandshake.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType>
</spirit:file>
<spirit:file> <spirit:file>
<spirit:name>src/SyncFIFO1.v</spirit:name> <spirit:name>src/SyncFIFO1.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType> <spirit:fileType>verilogSource</spirit:fileType>
</spirit:file> </spirit:file>
<spirit:file>
<spirit:name>src/SyncRegister.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType>
</spirit:file>
<spirit:file> <spirit:file>
<spirit:name>src/FIFO1.v</spirit:name> <spirit:name>src/FIFO1.v</spirit:name>
<spirit:fileType>verilogSource</spirit:fileType> <spirit:fileType>verilogSource</spirit:fileType>
...@@ -3083,18 +2887,18 @@ ...@@ -3083,18 +2887,18 @@
<xilinx:displayName>BlueDMA</xilinx:displayName> <xilinx:displayName>BlueDMA</xilinx:displayName>
<xilinx:definitionSource>package_project</xilinx:definitionSource> <xilinx:definitionSource>package_project</xilinx:definitionSource>
<xilinx:coreRevision>1</xilinx:coreRevision> <xilinx:coreRevision>1</xilinx:coreRevision>
<xilinx:coreCreationDateTime>2017-07-07T08:39:29Z</xilinx:coreCreationDateTime> <xilinx:coreCreationDateTime>2017-07-07T14:29:44Z</xilinx:coreCreationDateTime>
<xilinx:tags> <xilinx:tags>
<xilinx:tag xilinx:name="nopcore"/> <xilinx:tag xilinx:name="nopcore"/>
</xilinx:tags> </xilinx:tags>
</xilinx:coreExtensions> </xilinx:coreExtensions>
<xilinx:packagingInfo> <xilinx:packagingInfo>
<xilinx:xilinxVersion>2016.4</xilinx:xilinxVersion> <xilinx:xilinxVersion>2016.4</xilinx:xilinxVersion>
<xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="9aa6aa20"/> <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="37c8a920"/>
<xilinx:checksum xilinx:scope="addressSpaces" xilinx:value="39f16c3a"/> <xilinx:checksum xilinx:scope="addressSpaces" xilinx:value="39f16c3a"/>
<xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="5dd283ff"/> <xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="5dd283ff"/>
<xilinx:checksum xilinx:scope="fileGroups" xilinx:value="f4bc37ca"/> <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="7dca891b"/>
<xilinx:checksum xilinx:scope="ports" xilinx:value="8523f8a5"/> <xilinx:checksum xilinx:scope="ports" xilinx:value="434bb713"/>
<xilinx:checksum xilinx:scope="parameters" xilinx:value="1bb46e31"/> <xilinx:checksum xilinx:scope="parameters" xilinx:value="1bb46e31"/>
</xilinx:packagingInfo> </xilinx:packagingInfo>
</spirit:vendorExtensions> </spirit:vendorExtensions>
......
// Copyright (c) 2000-2013 Bluespec, Inc.
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.