"...composable_kernel.git" did not exist on "4eba345f6e4b68a5969a90d1eb44d63c696fe51e"
Commit a37b46ae authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

condrum: checkpoint

parent 9e3389aa
...@@ -410,10 +410,12 @@ static void h2d_readcomp(volatile struct cosim_pcie_proto_h2d_readcomp *rc) ...@@ -410,10 +410,12 @@ static void h2d_readcomp(volatile struct cosim_pcie_proto_h2d_readcomp *rc)
memcpy(op->data, (void *) rc->data, op->len); memcpy(op->data, (void *) rc->data, op->len);
#if 0
std::cerr << "dma read comp: "; std::cerr << "dma read comp: ";
for (size_t i = 0; i < op->len; i++) for (size_t i = 0; i < op->len; i++)
std::cerr << (unsigned) op->data[i] << " "; std::cerr << (unsigned) op->data[i] << " ";
std::cerr << std::endl; std::cerr << std::endl;
#endif
op->engine->pci_op_complete(op); op->engine->pci_op_complete(op);
...@@ -549,11 +551,22 @@ static void poll_h2d(MMIOInterface &mmio) ...@@ -549,11 +551,22 @@ static void poll_h2d(MMIOInterface &mmio)
class EthernetTx { class EthernetTx {
protected: protected:
Vinterface &top; Vinterface &top;
uint8_t packet_buf[2048];
size_t packet_len;
public: public:
EthernetTx(Vinterface &top_) EthernetTx(Vinterface &top_)
: top(top_) : top(top_), packet_len(0)
{
}
void packet_done()
{ {
std::cerr << "packet len=" << std::hex << packet_len << " ";
for (size_t i = 0; i < packet_len; i++) {
std::cerr << (unsigned) packet_buf[i] << " ";
}
std::cerr << std::endl;
} }
void step() void step()
...@@ -561,10 +574,21 @@ class EthernetTx { ...@@ -561,10 +574,21 @@ class EthernetTx {
top.tx_axis_tready = 1; top.tx_axis_tready = 1;
if (top.tx_axis_tvalid) { if (top.tx_axis_tvalid) {
std::cerr << "valid data: keep=" << (uintptr_t) top.tx_axis_tkeep << /* iterate over all 8 bytes */
" last=" << (bool) top.tx_axis_tlast << " " << top.tx_axis_tdata << std::endl; for (size_t i = 0; i < 8; i++) {
if ((top.tx_axis_tkeep & (1 << i)) != 0) {
assert(packet_len < 2048);
packet_buf[packet_len++] = (top.tx_axis_tdata >> (i * 8));
}
}
if (top.tx_axis_tlast) {
packet_done();
packet_len = 0;
}
} }
} }
}; };
......
...@@ -17,9 +17,9 @@ void DMAReader::step() ...@@ -17,9 +17,9 @@ void DMAReader::step()
op->tag = p.dma_tag; op->tag = p.dma_tag;
op->write = false; op->write = false;
pending.insert(op); pending.insert(op);
std::cout << "dma[" << label << "] op " << op->dma_addr << " -> " << /*std::cout << "dma[" << label << "] op " << op->dma_addr << " -> " <<
op->ram_sel << ":" << op->ram_addr << op->ram_sel << ":" << op->ram_addr <<
" len=" << op->len << " tag=" << (int) op->tag << std::endl; " len=" << op->len << " tag=" << (int) op->tag << std::endl;*/
pci_dma_issue(op); pci_dma_issue(op);
} }
...@@ -29,7 +29,7 @@ void DMAReader::step() ...@@ -29,7 +29,7 @@ void DMAReader::step()
DMAOp *op = completed.front(); DMAOp *op = completed.front();
completed.pop_front(); completed.pop_front();
std::cout << "dma[" << label << "] status complete " << op->dma_addr << std::endl; //std::cout << "dma[" << label << "] status complete " << op->dma_addr << std::endl;
p.dma_status_valid = 1; p.dma_status_valid = 1;
p.dma_status_tag = op->tag; p.dma_status_tag = op->tag;
...@@ -46,5 +46,5 @@ void DMAReader::pci_op_complete(DMAOp *op) ...@@ -46,5 +46,5 @@ void DMAReader::pci_op_complete(DMAOp *op)
void DMAReader::mem_op_complete(DMAOp *op) void DMAReader::mem_op_complete(DMAOp *op)
{ {
completed.push_back(op); completed.push_back(op);
std::cout << "dma[" << label << "] mem complete " << op->dma_addr << std::endl; //std::cout << "dma[" << label << "] mem complete " << op->dma_addr << std::endl;
} }
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
void MemWriter::step() void MemWriter::step()
{ {
if (cur && p.mem_ready) { if (cur && p.mem_ready) {
std::cerr << "completed write to: " << cur->ram_addr << std::endl; //std::cerr << "completed write to: " << cur->ram_addr << std::endl;
p.mem_valid = 0; p.mem_valid = 0;
p.mem_be[0] = p.mem_be[1] = p.mem_be[2] = p.mem_be[3] = 0; p.mem_be[0] = p.mem_be[1] = p.mem_be[2] = p.mem_be[3] = 0;
...@@ -30,10 +30,11 @@ void MemWriter::step() ...@@ -30,10 +30,11 @@ void MemWriter::step()
cur = pending.front(); cur = pending.front();
pending.pop_front(); pending.pop_front();
std::cerr << "issuing write to " << cur->ram_addr << std::endl; //std::cerr << "issuing write to " << cur->ram_addr << std::endl;
size_t data_byte_width = DATA_WIDTH / 8; size_t data_byte_width = DATA_WIDTH / 8;
size_t data_offset = cur->ram_addr % data_byte_width; size_t data_offset = cur->ram_addr % data_byte_width;
if (cur->len > data_byte_width - data_offset) { if (cur->len > data_byte_width - data_offset) {
std::cerr << "MemWriter::step: cannot be written in one cycle TODO" << std::endl; std::cerr << "MemWriter::step: cannot be written in one cycle TODO" << std::endl;
throw "unsupported"; throw "unsupported";
...@@ -75,6 +76,6 @@ void MemWriter::step() ...@@ -75,6 +76,6 @@ void MemWriter::step()
void MemWriter::op_issue(DMAOp *op) void MemWriter::op_issue(DMAOp *op)
{ {
std::cerr << "enqueued write to " << op->ram_addr << std::endl; //std::cerr << "enqueued write to " << op->ram_addr << std::endl;
pending.push_back(op); pending.push_back(op);
} }
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