Hard Processor System Component Reference Manual: Agilex™ 5 SoCs

ID 813752
Date 8/15/2025
Public
Document Table of Contents

4.3.5. test_f2h.sv

  1. Change directory to <project directory>/simple_tb/simple_tb/sim/.
  2. Create a file named test_f2h.sv and edit with contents as shown below.
    // test_f2h.sv
    
    `timescale 1 ps / 1 ps
    
    `define DUT	simple_inst			// name of top of design
    
    localparam ADDR_WIDTH = 40;			// must be in BITS
    localparam DATA_WIDTH = (256 / 8);		// must be in BYTES !!!!
    localparam ID_WIDTH   = 5;
    localparam USER_WIDTH = 8;
    
    import 		altera_lnsim_ver.	ace5_lite_bfm_types_pkg::*;
    import 		altera_lnsim_ver.	ace5_lite_operations_class_pkg::*;
    import 		altera_lnsim_ver.	ace5_lite_memory_class_pkg::*;
    import 		altera_lnsim_ver.	ace5_lite_burst_class_pkg::*;
    import 		altera_lnsim_ver.	ace5_lite_transaction_class_pkg::*;
     
    `define mgr_bfm 	`DUT.	ace5lite_bfm_mm_manager_0.ace5lite_bfm_mm_manager_0.\
    				requester_bfm.requestor_bfm_top
    `define sub_bfm 	`DUT.	intel_agilex_5_soc_0.intel_agilex_5_soc_0.\
    				sm_mpfe.sundancemesa_mpfe_inst.f2soc_bfm_gen.\
    				f2h_ace5lite_slave_inst
    
    `define CLK_PATH 	`DUT.	clock_in.out_clk
    `define RESET_PATH 	`DUT.	reset_in.out_reset
    
    module test_f2h#();
    	logic [255:0] out_data;
    	reg f;
    
    	// write/read response
    	ace5_lite_xresp_t w_rsp;
    	ace5_lite_xresp_t r_rsp;
    
    ////////////////////////////////////////////////////////////////////////////////////
    initial begin
       
       $timeformat(-9, 3, "ns", 4);
    
       $display("");
       // Wait until reset is deasserted.
       wait(~`sub_bfm.ace5_lite_bus.rst_n); wait(`sub_bfm.ace5_lite_bus.rst_n); 
    
       f<= 1'b0;
       #1000;
       `mgr_bfm.write256(.address(     0), .data(256'h12341234), .response(w_rsp));
       `mgr_bfm.write256(.address('h1000), .data(256'haaaabbbb), .response(w_rsp));
       `mgr_bfm.write256(.address('h2000), .data(256'hbbbbcccc), .response(w_rsp));
       `mgr_bfm.write256(.address('h3000), .data(256'habcdabcd), .response(w_rsp));
       `mgr_bfm.write256(.address('h4000), .data(256'h12121212), .response(w_rsp));
    
       #1000;
       `mgr_bfm.read256(.address(0), .data(out_data), .response(r_rsp));
       if(out_data == 256'h12341234) begin
         $display("Success. Read data matches Write data ");
         end else begin
         $display("Error: 0x0000 Read data = %h, Write data: 0x12341234", out_data);
         f<= 1'b1;
         end
    
       `mgr_bfm.read256(.address('h1000), .data(out_data), .response(r_rsp));
       if(out_data == 256'haaaabbbb) begin
         $display("Success. Read data matches Write data ");
         end else begin
         $display("Error: 'h1000 Read data = %h, Write data: haaaabbbb", out_data);
         f<= 1'b1;
         end
    
       `mgr_bfm.read256(.address('h2000), .data(out_data), .response(r_rsp));
       if(out_data == 256'hbbbbcccc) begin
         $display("Success. Read data matches Write data ");
         end else begin
         $display("Error: 'h2000 Read data = %h, Write data: hbbbbcccc", out_data);
         f<= 1'b1;
         end
         
       `mgr_bfm.read256(.address('h3000), .data(out_data), .response(r_rsp));
       if(out_data == 256'habcdabcd) begin
         $display("Success. Read data matches Write data ");
         end else begin
         $display("Error: 'h3000 Read data = %h, Write data: habcdabcd", out_data);
         f<= 1'b1;
         end
         
       `mgr_bfm.read256(.address('h4000), .data(out_data), .response(r_rsp));
       if(out_data == 256'h12121212) begin
         $display("Success. Read data matches Write data ");
         end else begin
         $display("Error: 'h4000 Read data = %h, Write data: h12121212", out_data);
         f<= 1'b1;
         end
    
    /////////////////////////////////////////// CHECK TESTS        ////////////////////
    #(18000000 - $time)		// wait until a certain time
        
      if (f==1'b1)
         $display ("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> fail    F2H   ");
      else
         $display ("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> pass    F2H   ");
    
    end
       
    endmodule