@@ -454,11 +454,11 @@ module tb_ch_calib_slink;
454454 $info (" [DDR%0d ]: Enabling clock and deassert link reset." , id);
455455 // Reset and clock gate sequence, AXI isolation remains enabled
456456 // De-assert reset
457- cfg_write (drv, `SLINK_REG_CTRL_REG_OFFSET , 32'h300 );
457+ cfg_write (drv, `SLINK_REG_CTRL_BASE_ADDR , 32'h300 );
458458 // Assert reset
459- cfg_write (drv, `SLINK_REG_CTRL_REG_OFFSET , 32'h302 );
459+ cfg_write (drv, `SLINK_REG_CTRL_BASE_ADDR , 32'h302 );
460460 // Enable clock
461- cfg_write (drv, `SLINK_REG_CTRL_REG_OFFSET , 32'h303 );
461+ cfg_write (drv, `SLINK_REG_CTRL_BASE_ADDR , 32'h303 );
462462 endtask
463463
464464 task automatic calibrate_link (apb_master_t drv, int id);
@@ -479,70 +479,70 @@ module tb_ch_calib_slink;
479479 // isolated before the master out port on the other side. Otherwise there might
480480 // transactions in flight that get lost
481481 $info (" [DDR%0d ]: Isolating AXI Slave In" , id);
482- cfg_write (drv, `SLINK_REG_CTRL_REG_OFFSET , 32'h103 );
482+ cfg_write (drv, `SLINK_REG_CTRL_BASE_ADDR , 32'h103 );
483483 do begin
484- cfg_read (drv, `SLINK_REG_ISOLATED_REG_OFFSET , data);
484+ cfg_read (drv, `SLINK_REG_ISOLATED_BASE_ADDR , data);
485485 end while (data[0 ] != 1'b1 ); // Wait until isolation status bit is 1
486486 $info (" [DDR%0d ]: Isolated AXI Slave In" , id);
487487 // Wait for a few clock cycles before isolating AXI Master out
488488 repeat (100 ) @ (posedge clk_reg);
489489 $info (" [DDR%0d ]: Isolating AXI Master Out" , id);
490- cfg_write (drv, `SLINK_REG_CTRL_REG_OFFSET , 32'h303 );
490+ cfg_write (drv, `SLINK_REG_CTRL_BASE_ADDR , 32'h303 );
491491 do begin
492- cfg_read (drv, `SLINK_REG_ISOLATED_REG_OFFSET , data);
492+ cfg_read (drv, `SLINK_REG_ISOLATED_BASE_ADDR , data);
493493 end while (data[1 : 0 ] != 2'b11 ); // Wait until both isolation status bit is are 1
494494 $info (" [DDR%0d ]: Isolated AXI Master Out" , id);
495495 // Configure Raw Mode
496496 $info (" [DDR%0d ]: Preparing link for calibration..." ,id);
497497 // Prepare channel allocator for RAW mode
498498 // Enable bypass mode and auto flush feature but disable sync for RX side
499- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CFG_REG_OFFSET , 32'h3 );
500- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CFG_REG_OFFSET , 32'h3 );
499+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CFG_BASE_ADDR , 32'h3 );
500+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CFG_BASE_ADDR , 32'h3 );
501501 // Enable Raw Mode
502- cfg_write (drv, `SLINK_REG_RAW_MODE_EN_REG_OFFSET , 1 );
502+ cfg_write (drv, `SLINK_REG_RAW_MODE_EN_BASE_ADDR , 1 );
503503 // Set mask for sending out pattern
504504 for (int i = 0 ; i < NumChannels; i++ ) begin
505- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_CH_MASK_0_REG_OFFSET + i * 4 , 1 );
505+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_CH_MASK_BASE_ADDR (i) , 1 );
506506 end
507507 for (int i = 0 ; i < NumChannels; i++ ) begin
508508 // Enable same channels in TX side of channel allocator
509- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CH_EN_0_REG_OFFSET + i * 4 , 1 );
510- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CH_EN_0_REG_OFFSET + i * 4 , 1 );
509+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CH_EN_BASE_ADDR (i) , 1 );
510+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CH_EN_BASE_ADDR (i) , 1 );
511511 end
512512 $info (" [DDR%0d ]: Sending calibration sequence" , id);
513513 // Clear the TX Fifo
514- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_REG_OFFSET , 32'h1 );
515- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_REG_OFFSET , 32'h0 );
514+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_BASE_ADDR , 32'h1 );
515+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_BASE_ADDR , 32'h0 );
516516 // Send a pattern sequence to TX FIFO
517517 for (int i = 0 ; i < 8 ; i++ ) begin
518518 pattern = 16'haaaa << i;
519519 pattern_q.push_back (pattern);
520- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_REG_OFFSET , pattern);
520+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_BASE_ADDR , pattern);
521521 end
522522 // Send out pattern
523- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_EN_REG_OFFSET , 1 );
523+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_EN_BASE_ADDR , 1 );
524524 // Wait until some channels have received data
525525 do begin
526526 for (int i = 0 ; i < NumChannels; i++ ) begin
527- cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_0_REG_OFFSET + i * 4 , data);
527+ cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_BASE_ADDR (i) , data);
528528 raw_mode_data_in_valid[i] = data[0 ];
529529 end
530530 end while (raw_mode_data_in_valid[NumChannels- 1 : 0 ] == 0 );
531531 // Iterate through every channel
532532 for (int c = 0 ; c < NumChannels; c++ ) begin
533533 // Select read channel
534- cfg_write (drv, `SLINK_REG_RAW_MODE_IN_CH_SEL_REG_OFFSET , c);
534+ cfg_write (drv, `SLINK_REG_RAW_MODE_IN_CH_SEL_BASE_ADDR , c);
535535 // Check read patterns
536536 foreach (pattern_q[i]) begin
537537 // Check first that there is valid data in the RX FIFO
538- cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_0_REG_OFFSET + c * 4 , data);
538+ cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_BASE_ADDR (c) , data);
539539 if (data == 1'b0 ) begin
540540 $info (" [DDR%0d ][CH%0d ] No data in RX FIFO" , id, c);
541541 working_rx_channels[c] = 1'b0 ;
542542 break ;
543543 end
544544 // Read out first pattern
545- cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_REG_OFFSET , data);
545+ cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_BASE_ADDR , data);
546546 if (pattern_q[i] != data) begin
547547 $error (" [DDR%0d ][CH%0d ] Pattern missmatch actual %h data expected %h " ,
548548 id, c, data, pattern_q[i]);
@@ -560,73 +560,73 @@ module tb_ch_calib_slink;
560560 // Check that there is no more valid data in the RX FIFOs
561561 // of all working channels
562562 for (int i = 0 ; i < NumChannels; i++ ) begin
563- cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_0_REG_OFFSET , data);
563+ cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_BASE_ADDR (i) , data);
564564 raw_mode_data_in_valid[i] = data[0 ];
565565 end
566566 assert ((raw_mode_data_in_valid[NumChannels- 1 : 0 ] & working_rx_channels) == '0 ) else begin
567567 $error (" [DDR%0d ] Still data in RX FIFO %s " , id, print_ch_mask (data & working_rx_channels));
568568 end
569569 // Clear the TX Fifo
570- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_REG_OFFSET , 32'h1 );
571- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_REG_OFFSET , 32'h0 );
570+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_BASE_ADDR , 32'h1 );
571+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_CTRL_BASE_ADDR , 32'h0 );
572572 // Wait for some time to make sure that the other side has handled calibration as well
573573 repeat (500 ) @ (posedge clk_reg);
574574 // Load the channel mask of working channels into TX FIFO
575575 // They should be immediately sent as TX FIFO is still enabled
576576 $info (" [DDR%0d ] Sending out RX channel mask." , id);
577577 for (int i = 0 ; i < (NumChannels + ChMaskBitsPerCycle - 1 )/ ChMaskBitsPerCycle; i++ ) begin
578578 // Write the channel mask into the TX FIFO
579- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_REG_OFFSET , { '0 , working_rx_channels[ChMaskBitsPerCycle* i+ : ChMaskBitsPerCycle]} );
579+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_DATA_FIFO_BASE_ADDR , { '0 , working_rx_channels[ChMaskBitsPerCycle* i+ : ChMaskBitsPerCycle]} );
580580 end
581581 // Wait until the channel mask from the other side has arrived
582582 do begin
583583 for (int i = 0 ; i < NumChannels; i++ ) begin
584- cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_0_REG_OFFSET + i * 4 , data);
584+ cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_VALID_BASE_ADDR (i) , data);
585585 raw_mode_data_in_valid[i] = data[0 ];
586586 end
587587 end while (raw_mode_data_in_valid[NumChannels- 1 : 0 ] == 0 );
588588 // Only check RX channels that are working
589589 for (int c = 0 ; c < NumChannels; c++ ) begin
590590 if (working_rx_channels[c]) begin
591591 // Select channel to read from
592- cfg_write (drv, `SLINK_REG_RAW_MODE_IN_CH_SEL_REG_OFFSET , c);
592+ cfg_write (drv, `SLINK_REG_RAW_MODE_IN_CH_SEL_BASE_ADDR , c);
593593 // Read the mask
594594 for (int i = 0 ; i < (NumChannels + ChMaskBitsPerCycle - 1 )/ ChMaskBitsPerCycle; i++ ) begin
595- cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_REG_OFFSET , working_tx_channels[ChMaskBitsPerCycle* i+ : ChMaskBitsPerCycle]);
595+ cfg_read (drv, `SLINK_REG_RAW_MODE_IN_DATA_BASE_ADDR , working_tx_channels[ChMaskBitsPerCycle* i+ : ChMaskBitsPerCycle]);
596596 end
597597 end
598598 end
599599 $info (" [DDR%0d ] TX channel mask %s " , id, print_ch_mask (working_tx_channels));
600600 // Disable TX Fifo
601- cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_EN_REG_OFFSET , 0 );
601+ cfg_write (drv, `SLINK_REG_RAW_MODE_OUT_EN_BASE_ADDR , 0 );
602602 // Enable RX/TX channels
603603 for (int i = 0 ; i < NumChannels; i++ ) begin
604- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CH_EN_0_REG_OFFSET + 4 * i , working_tx_channels[i]);
605- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CH_EN_0_REG_OFFSET + 4 * i , working_rx_channels[i]);
604+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CH_EN_BASE_ADDR (i) , working_tx_channels[i]);
605+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CH_EN_BASE_ADDR (i) , working_rx_channels[i]);
606606 end
607607 // Configure channel allocator
608608 // Set auto-flush count value == 2
609609 if ($countones (working_tx_channels) == NumChannels) begin
610610 // Enable bypass
611- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CFG_REG_OFFSET , 32'h203 );
611+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CFG_BASE_ADDR , 32'h203 );
612612 end else begin
613613 // Disable bypass
614- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CFG_REG_OFFSET , 32'h202 );
614+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_TX_CFG_BASE_ADDR , 32'h202 );
615615 end
616616 // Set auto-flush count value == 2 and re-enable RX synchronization
617617 if ($countones (working_rx_channels) == NumChannels) begin
618- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CFG_REG_OFFSET , 32'h10203 );
618+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CFG_BASE_ADDR , 32'h10203 );
619619 end else begin
620- cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CFG_REG_OFFSET , 32'h10202 );
620+ cfg_write (drv, `SLINK_REG_CHANNEL_ALLOC_RX_CFG_BASE_ADDR , 32'h10202 );
621621 end
622622 // Configure normal operating mode
623- cfg_write (drv, `SLINK_REG_RAW_MODE_EN_REG_OFFSET , 0 );
623+ cfg_write (drv, `SLINK_REG_RAW_MODE_EN_BASE_ADDR , 0 );
624624 // Wait for the other Serial Link to be ready
625625 repeat (100 ) @ (posedge clk_reg);
626626 $info (" [DDR%0d ] Enabling AXI ports..." ,id);
627- cfg_write (drv, `SLINK_REG_CTRL_REG_OFFSET , 32'h03 );
627+ cfg_write (drv, `SLINK_REG_CTRL_BASE_ADDR , 32'h03 );
628628 do begin
629- cfg_read (drv, `SLINK_REG_ISOLATED_REG_OFFSET , data);
629+ cfg_read (drv, `SLINK_REG_ISOLATED_BASE_ADDR , data);
630630 end while (data != 0 ); // Wait until both isolation status bits are 0 to
631631 // indicate disabling of isolation
632632 $info (" [DDR%0d ] Link is ready" , id);
0 commit comments