cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Explorer
Explorer
555 Views
Registered: ‎10-12-2018

AXI-Stream VIP: SIGNAL_SET: Miscompare: lhs: 0x1a rhs: 0x1b

Jump to solution

Hi,

My design contains an Aurora 64B66B IP. I created a loopback for simulation with two AXI-Stream VIP (a master for TX and a slave for RX). I tries to compare the sent and the recieved transactions but I got the following error: AXI-Stream VIP: SIGNAL_SET: Miscompare: lhs: 0x1a rhs: 0x1b

I got this because the RX Aurora has no tready signal, and therefore the VIP has no tready. Here is a snippet from axi4stream_vip_pkg.sv

parameter XIL_AXI4STREAM_SIGSET_READY     = 8'b00000001;
parameter XIL_AXI4STREAM_SIGSET_DATA      = 8'b00000010;
parameter XIL_AXI4STREAM_SIGSET_STRB      = 8'b00000100;
parameter XIL_AXI4STREAM_SIGSET_KEEP      = 8'b00001000;
parameter XIL_AXI4STREAM_SIGSET_LAST      = 8'b00010000;
parameter XIL_AXI4STREAM_SIGSET_ID        = 8'b00100000;
parameter XIL_AXI4STREAM_SIGSET_DEST      = 8'b01000000;
parameter XIL_AXI4STREAM_SIGSET_USER      = 8'b10000000;
parameter XIL_AXI4STREAM_SIGSET_ALL       = 8'b11111111;

So I know that there is a mismatch in signal set (the tready) between the master and the slave, but how can I tell the to do_compare() method to ignore this miscompare?

(A workaround seems to generate tready on both side, just assert high always on slave side.)

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Explorer
Explorer
486 Views
Registered: ‎10-12-2018

Re: AXI-Stream VIP: SIGNAL_SET: Miscompare: lhs: 0x1a rhs: 0x1b

Jump to solution

Hi,

Two working solution:

  1. Setup AXI-Stream VIP with always asserted tready (as I suggested earlyer)
  2. Set signal before do_compare (as @calebd suggested)

 

Setup AXI-Stream VIP with always asserted tready

Enable has tready property (on both rx and tx VIP) (during generating the VIP)

Then tell the agent to assert the tready always (in testcase):

axis_vip_slave_slv_t s_axis_agent;
axi4stream_ready_gen ready_gen;
// start slave agent s_axis_agent.start_slave(); // Generate NO backpressure because there is no tready on Aurora ready_gen = s_axis_agent.driver.create_ready("ready_gen00"); ready_gen.set_ready_policy(XIL_AXI4STREAM_READY_GEN_NO_BACKPRESSURE); s_axis_agent.driver.send_tready(ready_gen);

Set signal before do_compare

Disable has tready property (on rx side) (during generating the VIP)

Then set the sigset before (each) do_compare():

axi4stream_monitor_transaction mst_tr;  // tx transaction
axi4stream_monitor_transaction slv_tr;   // rx transaction (no tready)

mst_tr.set_signal_set(slv_tr.get_signal_set());
slv_tr.do_compare(mst_tr)

 

 

 

View solution in original post

0 Kudos
2 Replies
Highlighted
Moderator
Moderator
507 Views
Registered: ‎01-09-2019

Re: AXI-Stream VIP: SIGNAL_SET: Miscompare: lhs: 0x1a rhs: 0x1b

Jump to solution

Hello @betontalpfa 

Your workaround of sending TREADY for your entire transaction does seem to be AXI-compliant so that could be one way to get your comparison to work.  Otherwise could you just do a simple bitmask to only compare the first 7 bits and the last bit be a don't care (or wherever the bit is for tready)?.  For instance some pseudo-C code:

if ((lhs | 8'b00000001) == (rhs | 8'b00000001) {
  printf("They equal, henceforth party");
} else {
  print("Not today, but maybe later");
}

Or am I misinterpreting your question?  With the do_compare() function you might need to change the signal before sending it to the function, but the bitmasking should still work.

Thanks,
Caleb
-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 Kudos
Highlighted
Explorer
Explorer
487 Views
Registered: ‎10-12-2018

Re: AXI-Stream VIP: SIGNAL_SET: Miscompare: lhs: 0x1a rhs: 0x1b

Jump to solution

Hi,

Two working solution:

  1. Setup AXI-Stream VIP with always asserted tready (as I suggested earlyer)
  2. Set signal before do_compare (as @calebd suggested)

 

Setup AXI-Stream VIP with always asserted tready

Enable has tready property (on both rx and tx VIP) (during generating the VIP)

Then tell the agent to assert the tready always (in testcase):

axis_vip_slave_slv_t s_axis_agent;
axi4stream_ready_gen ready_gen;
// start slave agent s_axis_agent.start_slave(); // Generate NO backpressure because there is no tready on Aurora ready_gen = s_axis_agent.driver.create_ready("ready_gen00"); ready_gen.set_ready_policy(XIL_AXI4STREAM_READY_GEN_NO_BACKPRESSURE); s_axis_agent.driver.send_tready(ready_gen);

Set signal before do_compare

Disable has tready property (on rx side) (during generating the VIP)

Then set the sigset before (each) do_compare():

axi4stream_monitor_transaction mst_tr;  // tx transaction
axi4stream_monitor_transaction slv_tr;   // rx transaction (no tready)

mst_tr.set_signal_set(slv_tr.get_signal_set());
slv_tr.do_compare(mst_tr)

 

 

 

View solution in original post

0 Kudos