URL
https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk
Subversion Repositories qaz_libs
Compare Revisions
- This comparison shows the changes necessary to convert path
/qaz_libs/trunk/PCIe/sim/src
- from Rev 34 to Rev 35
- ↔ Reverse comparison
Rev 34 → Rev 35
/riffa_agent_class_pkg.sv
40,7 → 40,8
riffa_transaction_class #(N) tr_h; |
rp_tx_bfm_class #(N) tx_h; |
rp_rx_bfm_class #(N) rx_h; |
mailbox #(riffa_transaction_class #(N)) q; |
// mailbox #(riffa_transaction_class #(N)) tx_q, rx_q; |
mailbox #(riffa_transaction_class #(N)) tx_q; |
|
|
// -------------------------------------------------------------------- |
47,17 → 48,37
// |
task queue_tx(riffa_transaction_class #(N) tr_h); |
tx_h.put(tr_h); |
q.put(tr_h); |
tx_q.put(tr_h); |
endtask: queue_tx |
|
|
// -------------------------------------------------------------------- |
// |
task queue_tx_constant(int len, int off, bit last, logic [(8*N)-1:0] value); |
tr_h = new(len, off, last); |
tr_h.constant(len, off, last, value); |
tx_h.put(tr_h); |
tx_q.put(tr_h); |
endtask: queue_tx_constant |
|
|
// -------------------------------------------------------------------- |
// |
task queue_tx_counting(int len, int off, bit last); |
tr_h = new(len, off, last); |
tr_h.counting(len, off, last); |
tx_h.put(tr_h); |
tx_q.put(tr_h); |
endtask: queue_tx_counting |
|
|
// -------------------------------------------------------------------- |
// |
task queue_tx_random(int len, int off, bit last); |
tr_h = new(len, off, last); |
tr_h.random(len, off, last); |
tx_h.put(tr_h); |
q.put(tr_h); |
tx_q.put(tr_h); |
endtask: queue_tx_random |
|
|
66,6 → 87,7
task queue_rx(int len, int off, bit last); |
tr_h = new(len, off, last); |
rx_h.put(tr_h); |
// rx_q.put(tr_h); |
endtask: queue_rx |
|
|
88,7 → 110,8
function new(virtual riffa_chnl_if #(.N(N)) chnl_bus); |
tx_h = new(chnl_bus); |
rx_h = new(chnl_bus); |
this.q = new; |
this.tx_q = new; |
// this.rx_q = new; |
endfunction: new |
|
|
/riffa_bfm_class_pkg.sv
55,6 → 55,30
|
//-------------------------------------------------------------------- |
// |
function void constant(int len, int off, bit last, logic [(8*N)-1:0] value); |
this.data = new[get_data_size(len)]; |
this.len = len; |
this.off = off; |
this.last = last; |
foreach(this.data[i]) |
this.data[i] = value; |
endfunction: constant |
|
|
//-------------------------------------------------------------------- |
// |
function void counting(int len, int off, bit last); |
this.data = new[get_data_size(len)]; |
this.len = len; |
this.off = off; |
this.last = last; |
foreach(this.data[i]) |
this.data[i] = i; |
endfunction: counting |
|
|
//-------------------------------------------------------------------- |
// |
function void random(int len, int off, bit last); |
this.data = new[get_data_size(len)]; |
assert(this.randomize() with |
69,6 → 93,33
endfunction: random |
|
|
//-------------------------------------------------------------------- |
// |
function void compare(riffa_transaction_class #(N) to, int max_mismatches = 8); |
int error_count = 0; |
$display("!!! %16.t | %m", $time); |
if(this.len != to.len) |
$display("!!! %16.t | ERROR! len mismatch", $time); |
|
if(this.off != to.off) |
$display("!!! %16.t | ERROR! off mismatch", $time); |
|
if(this.last != to.last) |
$display("!!! %16.t | ERROR! last mismatch", $time); |
|
foreach(this.data[i]) |
begin |
if(error_count > max_mismatches) |
break; |
if(this.data[i] != to.data[i]) |
begin |
$display("!!! %16.t | ERROR! | 0x%x | this != to | 0x%x != 0x%x", $time, i, this.data[i], to.data[i]); |
error_count++; |
end |
end |
endfunction: compare |
|
|
// // -------------------------------------------------------------------- |
// // |
// function void copy(ref riffa_transaction_class #(N) from); |
199,18 → 250,22
|
chnl_bus.cb_rp_rx.tx_ack <= 1; |
chnl_bus.cb_rp_rx.tx_data_ren <= 1; |
|
|
fork |
@(chnl_bus.cb_rp_tx) |
chnl_bus.cb_rp_rx.tx_ack <= 0; |
join_none |
|
|
// foreach(tr_h.data[i]) |
// @(chnl_bus.cb_rp_tx) |
// if(~chnl_bus.cb_rp_rx.tx) |
// break; |
// else if(chnl_bus.cb_rp_rx.tx_data_valid) |
// tr_h.data[i] <= chnl_bus.cb_rp_rx.tx_data; |
|
foreach(tr_h.data[i]) |
@(chnl_bus.cb_rp_tx) |
if(~chnl_bus.cb_rp_rx.tx) |
break; |
else if(chnl_bus.cb_rp_rx.tx_data_valid) |
tr_h.data[i] <= chnl_bus.cb_rp_rx.tx_data; |
@(chnl_bus.cb_rp_tx iff chnl_bus.cb_rp_rx.tx_data_valid) |
tr_h.data[i] <= chnl_bus.cb_rp_rx.tx_data; |
|
rx_q.put(tr_h); |
set_default(); |