The log for each unit test that is run by the regression script is stored in a transcript file in the simulation directory of the test that was run.
-$OFS_ROOTDIR/sim/unit_test/<TEST_NAME>/<SIMULATOR>/transcript
+$OFS_ROOTDIR/sim/unit_test/<TEST_NAME>/<SIMULATOR>/transcript
For example, the log for the DFH walker test using VCSMX would be found at:
-$OFS_ROOTDIR/sim/unit_test/dfh_walker/sim_vcsmx/transcript
+$OFS_ROOTDIR/sim/unit_test/dfh_walker/sim_vcsmx/transcript
The simulation waveform database is saved as vcdplus.vpd for post simulation review.
3.3.1 Walkthrough: Run Regression Unit Level Simulation
@@ -6290,43 +6733,43 @@ 3.3.1 Walk
Create a test list file to only run the unit level simulations that are supported for the fseries-dk FIM.
-touch $OFS_ROOTDIR/sim/unit_test/list.txt
+touch $OFS_ROOTDIR/sim/unit_test/list.txt
Copy the following list into the new file. You may remove tests from this list as desired.
-./bfm_test/set_params.sh
-./csr_test/set_params.sh
-./dfh_walker/set_params.sh
-./flr/set_params.sh
-./fme_csr_access/set_params.sh
-./fme_csr_directed/set_params.sh
-./he_lb_test/set_params.sh
-./he_mem_lb_test/set_params.sh
-./he_null_test/set_params.sh
-./hssi_csr_test/set_params.sh
-./hssi_kpi_test/set_params.sh
-./hssi_test/set_params.sh
-./indirect_csr/set_params.sh
-./mem_ss_csr_test/set_params.sh
-./mem_ss_rst_test/set_params.sh
-./mem_tg_test/set_params.sh
-./pcie_ats_basic_test/set_params.sh
-./pcie_csr_test/set_params.sh
-./pcie_ss_axis_components/set_params.sh
-./pf_vf_access_test/set_params.sh
-./port_gasket_test/set_params.sh
-./qsfp_test/set_params.sh
-./remote_stp_test/set_params.sh
-./uart_csr/set_params.sh
+./bfm_test/set_params.sh
+./csr_test/set_params.sh
+./dfh_walker/set_params.sh
+./flr/set_params.sh
+./fme_csr_access/set_params.sh
+./fme_csr_directed/set_params.sh
+./he_lb_test/set_params.sh
+./he_mem_lb_test/set_params.sh
+./he_null_test/set_params.sh
+./hssi_csr_test/set_params.sh
+./hssi_kpi_test/set_params.sh
+./hssi_test/set_params.sh
+./indirect_csr/set_params.sh
+./mem_ss_csr_test/set_params.sh
+./mem_ss_rst_test/set_params.sh
+./mem_tg_test/set_params.sh
+./pcie_ats_basic_test/set_params.sh
+./pcie_csr_test/set_params.sh
+./pcie_ss_axis_components/set_params.sh
+./pf_vf_access_test/set_params.sh
+./port_gasket_test/set_params.sh
+./qsfp_test/set_params.sh
+./remote_stp_test/set_params.sh
+./uart_csr/set_params.sh
Navigate to the unit test scripts directory.
-cd $OFS_ROOTDIR/sim/unit_test/scripts
+cd $OFS_ROOTDIR/sim/unit_test/scripts
Run regression test with the your desired options. For example, to simulate with the options to generate simulation files, run locally, use 8 processes, run all tests, use VCS simulator, and target the fseries-dk:
-python regress_run.py -g -l -n 8 -k list -s vcs -b fseries-dk
+python regress_run.py -g -l -n 8 -k list -s vcs -b fseries-dk
Note: You may run all available tests by using -k all
instead of creating and using -k list
, however not all tests are supported depending on the target board.
@@ -6335,36 +6778,36 @@ 3.3.1 Walk
Once all tests are complete, check that the tests have passed.
Example output:
-Passing Unit Tests:24/24 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- bfm_test:............... PASS -- Time Elapsed:0:01:14.600452
- csr_test:............... PASS -- Time Elapsed:0:01:30.972054
- dfh_walker:............. PASS -- Time Elapsed:0:01:15.179127
- flr:.................... PASS -- Time Elapsed:0:01:14.579890
- fme_csr_access:......... PASS -- Time Elapsed:0:00:48.545993
- fme_csr_directed:....... PASS -- Time Elapsed:0:00:54.702789
- he_lb_test:............. PASS -- Time Elapsed:0:02:11.371956
- he_mem_lb_test:......... PASS -- Time Elapsed:0:41:32.226191
- he_null_test:........... PASS -- Time Elapsed:0:01:11.791063
- hssi_csr_test:.......... PASS -- Time Elapsed:0:44:10.611323
- hssi_kpi_test:.......... PASS -- Time Elapsed:2:28:24.465424
- hssi_test:.............. PASS -- Time Elapsed:2:23:52.603328
- indirect_csr:........... PASS -- Time Elapsed:0:01:02.535460
- mem_ss_csr_test:........ PASS -- Time Elapsed:0:23:37.683859
- mem_ss_rst_test:........ PASS -- Time Elapsed:0:45:19.603426
- mem_tg_test:............ PASS -- Time Elapsed:0:28:59.823955
- pcie_ats_basic_test:.... PASS -- Time Elapsed:0:01:10.104139
- pcie_csr_test:.......... PASS -- Time Elapsed:0:01:10.891950
- pcie_ss_axis_components: PASS -- Time Elapsed:0:02:04.448343
- pf_vf_access_test:...... PASS -- Time Elapsed:0:01:09.465886
- port_gasket_test:....... PASS -- Time Elapsed:0:01:11.912088
- qsfp_test:.............. PASS -- Time Elapsed:0:05:10.887379
- remote_stp_test:........ PASS -- Time Elapsed:0:01:14.684407
- uart_csr:............... PASS -- Time Elapsed:0:01:34.763679
-Failing Unit Tests: 0/24 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- Number of Unit test results captured: 24
- Number of Unit test results passing.: 24
- Number of Unit test results failing.: 0
+Passing Unit Tests:24/24 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+ bfm_test:............... PASS -- Time Elapsed:0:01:14.600452
+ csr_test:............... PASS -- Time Elapsed:0:01:30.972054
+ dfh_walker:............. PASS -- Time Elapsed:0:01:15.179127
+ flr:.................... PASS -- Time Elapsed:0:01:14.579890
+ fme_csr_access:......... PASS -- Time Elapsed:0:00:48.545993
+ fme_csr_directed:....... PASS -- Time Elapsed:0:00:54.702789
+ he_lb_test:............. PASS -- Time Elapsed:0:02:11.371956
+ he_mem_lb_test:......... PASS -- Time Elapsed:0:41:32.226191
+ he_null_test:........... PASS -- Time Elapsed:0:01:11.791063
+ hssi_csr_test:.......... PASS -- Time Elapsed:0:44:10.611323
+ hssi_kpi_test:.......... PASS -- Time Elapsed:2:28:24.465424
+ hssi_test:.............. PASS -- Time Elapsed:2:23:52.603328
+ indirect_csr:........... PASS -- Time Elapsed:0:01:02.535460
+ mem_ss_csr_test:........ PASS -- Time Elapsed:0:23:37.683859
+ mem_ss_rst_test:........ PASS -- Time Elapsed:0:45:19.603426
+ mem_tg_test:............ PASS -- Time Elapsed:0:28:59.823955
+ pcie_ats_basic_test:.... PASS -- Time Elapsed:0:01:10.104139
+ pcie_csr_test:.......... PASS -- Time Elapsed:0:01:10.891950
+ pcie_ss_axis_components: PASS -- Time Elapsed:0:02:04.448343
+ pf_vf_access_test:...... PASS -- Time Elapsed:0:01:09.465886
+ port_gasket_test:....... PASS -- Time Elapsed:0:01:11.912088
+ qsfp_test:.............. PASS -- Time Elapsed:0:05:10.887379
+ remote_stp_test:........ PASS -- Time Elapsed:0:01:14.684407
+ uart_csr:............... PASS -- Time Elapsed:0:01:34.763679
+Failing Unit Tests: 0/24 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+ Number of Unit test results captured: 24
+ Number of Unit test results passing.: 24
+ Number of Unit test results failing.: 0
@@ -6521,333 +6964,333 @@ 4.1.2 Walkthrou
Make hello_fim source directory
-mkdir $OFS_ROOTDIR/src/hello_fim
+mkdir $OFS_ROOTDIR/src/hello_fim
Create hello_fim_top.sv
file.
-touch $OFS_ROOTDIR/src/hello_fim/hello_fim_top.sv
+touch $OFS_ROOTDIR/src/hello_fim/hello_fim_top.sv
Copy the following code into hello_fim_top.sv
:
-// ***************************************************************************
-// INTEL CONFIDENTIAL
-//
-// Copyright (C) 2023 Intel Corporation All Rights Reserved.
-//
-// The source code contained or described herein and all documents related to
-// the source code ("Material") are owned by Intel Corporation or its
-// suppliers or licensors. Title to the Material remains with Intel
-// Corporation or its suppliers and licensors. The Material contains trade
-// secrets and proprietary and confidential information of Intel or its
-// suppliers and licensors. The Material is protected by worldwide copyright
-// and trade secret laws and treaty provisions. No part of the Material may be
-// used, copied, reproduced, modified, published, uploaded, posted,
-// transmitted, distributed, or disclosed in any way without Intel's prior
-// express written permission.
-//
-// No license under any patent, copyright, trade secret or other intellectual
-// property right is granted to or conferred upon you by disclosure or
-// delivery of the Materials, either expressly, by implication, inducement,
-// estoppel or otherwise. Any license under such intellectual property rights
-// must be express and approved by Intel in writing.
-//
-// You will not, and will not allow any third party to modify, adapt, enhance,
-// disassemble, decompile, reverse engineer, change or create derivative works
-// from the Software except and only to the extent as specifically required by
-// mandatory applicable laws or any applicable third party license terms
-// accompanying the Software.
-//
-// -----------------------------------------------------------------------------
-// Engineer :
-// Create Date : September 2023
-// Module Name : hello_fim_top.sv
-// Project : OFS
-// -----------------------------------------------------------------------------
-//
-// Description:
-// This is a simple module that implements DFH registers and
-// AVMM address decoding logic.
-
-module hello_fim_top #(
- parameter ADDR_WIDTH = 12,
- parameter DATA_WIDTH = 64,
- parameter bit [11:0] FEAT_ID = 12'h001,
- parameter bit [3:0] FEAT_VER = 4'h1,
- parameter bit [23:0] NEXT_DFH_OFFSET = 24'h1000,
- parameter bit END_OF_LIST = 1'b0
-)(
- input logic clk,
- input logic reset,
-// -----------------------------------------------------------
-// AXI4LITE Interface
-// -----------------------------------------------------------
- ofs_fim_axi_lite_if.slave csr_lite_if
-);
-
-import ofs_fim_cfg_pkg::*;
-import ofs_csr_pkg::*;
-
-//-------------------------------------
-// Signals
-//-------------------------------------
- logic [ADDR_WIDTH-1:0] csr_waddr;
- logic [DATA_WIDTH-1:0] csr_wdata;
- logic [DATA_WIDTH/8-1:0] csr_wstrb;
- logic csr_write;
- logic csr_slv_wready;
- csr_access_type_t csr_write_type;
-
- logic [ADDR_WIDTH-1:0] csr_raddr;
- logic csr_read;
- logic csr_read_32b;
- logic [DATA_WIDTH-1:0] csr_readdata;
- logic csr_readdata_valid;
- logic [ADDR_WIDTH-1:0] csr_addr;
-
- logic [63:0] com_csr_writedata;
- logic com_csr_read;
- logic com_csr_write;
- logic [63:0] com_csr_readdata;
- logic com_csr_readdatavalid;
- logic [5:0] com_csr_address;
-
-// AXI-M CSR interfaces
-ofs_fim_axi_mmio_if #(
- .AWID_WIDTH (ofs_fim_cfg_pkg::MMIO_TID_WIDTH),
- .AWADDR_WIDTH (ADDR_WIDTH),
- .WDATA_WIDTH (ofs_fim_cfg_pkg::MMIO_DATA_WIDTH),
- .ARID_WIDTH (ofs_fim_cfg_pkg::MMIO_TID_WIDTH),
- .ARADDR_WIDTH (ADDR_WIDTH),
- .RDATA_WIDTH (ofs_fim_cfg_pkg::MMIO_DATA_WIDTH)
-) csr_if();
-
-// AXI4-lite to AXI-M adapter
-axi_lite2mmio axi_lite2mmio (
- .clk (clk),
- .rst_n (~reset),
- .lite_if (csr_lite_if),
- .mmio_if (csr_if)
-);
-
-//---------------------------------
-// Map AXI write/read request to CSR write/read,
-// and send the write/read response back
-//---------------------------------
-ofs_fim_axi_csr_slave #(
- .ADDR_WIDTH (ADDR_WIDTH),
- .USE_SLV_READY (1'b1)
-
- ) csr_slave (
- .csr_if (csr_if),
-
- .csr_write (csr_write),
- .csr_waddr (csr_waddr),
- .csr_write_type (csr_write_type),
- .csr_wdata (csr_wdata),
- .csr_wstrb (csr_wstrb),
- .csr_slv_wready (csr_slv_wready),
- .csr_read (csr_read),
- .csr_raddr (csr_raddr),
- .csr_read_32b (csr_read_32b),
- .csr_readdata (csr_readdata),
- .csr_readdata_valid (csr_readdata_valid)
-);
-
-// Address mapping
-assign csr_addr = csr_write ? csr_waddr : csr_raddr;
-assign com_csr_address = csr_addr[5:0]; // byte address
-assign csr_slv_wready = 1'b1 ;
-// Write data mapping
-assign com_csr_writedata = csr_wdata;
-
-// Read-Write mapping
-always_comb
-begin
- com_csr_read = 1'b0;
- com_csr_write = 1'b0;
- casez (csr_addr[11:6])
- 6'h00 : begin // Common CSR
- com_csr_read = csr_read;
- com_csr_write = csr_write;
- end
- default: begin
- com_csr_read = 1'b0;
- com_csr_write = 1'b0;
- end
- endcase
-end
-
-// Read data mapping
-always_comb begin
- if (com_csr_readdatavalid) begin
- csr_readdata = com_csr_readdata;
- csr_readdata_valid = 1'b1;
- end
- else begin
- csr_readdata = '0;
- csr_readdata_valid = 1'b0;
- end
-end
-
-hello_fim_com #(
- .FEAT_ID (FEAT_ID),
- .FEAT_VER (FEAT_VER),
- .NEXT_DFH_OFFSET (NEXT_DFH_OFFSET),
- .END_OF_LIST (END_OF_LIST)
-) hello_fim_com_inst (
- .clk (clk ),
- .reset (reset ),
- .writedata (com_csr_writedata ),
- .read (com_csr_read ),
- .write (com_csr_write ),
- .byteenable (4'hF ),
- .readdata (com_csr_readdata ),
- .readdatavalid (com_csr_readdatavalid ),
- .address (com_csr_address )
- );
-endmodule
+// ***************************************************************************
+// INTEL CONFIDENTIAL
+//
+// Copyright (C) 2023 Intel Corporation All Rights Reserved.
+//
+// The source code contained or described herein and all documents related to
+// the source code ("Material") are owned by Intel Corporation or its
+// suppliers or licensors. Title to the Material remains with Intel
+// Corporation or its suppliers and licensors. The Material contains trade
+// secrets and proprietary and confidential information of Intel or its
+// suppliers and licensors. The Material is protected by worldwide copyright
+// and trade secret laws and treaty provisions. No part of the Material may be
+// used, copied, reproduced, modified, published, uploaded, posted,
+// transmitted, distributed, or disclosed in any way without Intel's prior
+// express written permission.
+//
+// No license under any patent, copyright, trade secret or other intellectual
+// property right is granted to or conferred upon you by disclosure or
+// delivery of the Materials, either expressly, by implication, inducement,
+// estoppel or otherwise. Any license under such intellectual property rights
+// must be express and approved by Intel in writing.
+//
+// You will not, and will not allow any third party to modify, adapt, enhance,
+// disassemble, decompile, reverse engineer, change or create derivative works
+// from the Software except and only to the extent as specifically required by
+// mandatory applicable laws or any applicable third party license terms
+// accompanying the Software.
+//
+// -----------------------------------------------------------------------------
+// Engineer :
+// Create Date : September 2023
+// Module Name : hello_fim_top.sv
+// Project : OFS
+// -----------------------------------------------------------------------------
+//
+// Description:
+// This is a simple module that implements DFH registers and
+// AVMM address decoding logic.
+
+module hello_fim_top #(
+ parameter ADDR_WIDTH = 12,
+ parameter DATA_WIDTH = 64,
+ parameter bit [11:0] FEAT_ID = 12'h001,
+ parameter bit [3:0] FEAT_VER = 4'h1,
+ parameter bit [23:0] NEXT_DFH_OFFSET = 24'h1000,
+ parameter bit END_OF_LIST = 1'b0
+)(
+ input logic clk,
+ input logic reset,
+// -----------------------------------------------------------
+// AXI4LITE Interface
+// -----------------------------------------------------------
+ ofs_fim_axi_lite_if.slave csr_lite_if
+);
+
+import ofs_fim_cfg_pkg::*;
+import ofs_csr_pkg::*;
+
+//-------------------------------------
+// Signals
+//-------------------------------------
+ logic [ADDR_WIDTH-1:0] csr_waddr;
+ logic [DATA_WIDTH-1:0] csr_wdata;
+ logic [DATA_WIDTH/8-1:0] csr_wstrb;
+ logic csr_write;
+ logic csr_slv_wready;
+ csr_access_type_t csr_write_type;
+
+ logic [ADDR_WIDTH-1:0] csr_raddr;
+ logic csr_read;
+ logic csr_read_32b;
+ logic [DATA_WIDTH-1:0] csr_readdata;
+ logic csr_readdata_valid;
+ logic [ADDR_WIDTH-1:0] csr_addr;
+
+ logic [63:0] com_csr_writedata;
+ logic com_csr_read;
+ logic com_csr_write;
+ logic [63:0] com_csr_readdata;
+ logic com_csr_readdatavalid;
+ logic [5:0] com_csr_address;
+
+// AXI-M CSR interfaces
+ofs_fim_axi_mmio_if #(
+ .AWID_WIDTH (ofs_fim_cfg_pkg::MMIO_TID_WIDTH),
+ .AWADDR_WIDTH (ADDR_WIDTH),
+ .WDATA_WIDTH (ofs_fim_cfg_pkg::MMIO_DATA_WIDTH),
+ .ARID_WIDTH (ofs_fim_cfg_pkg::MMIO_TID_WIDTH),
+ .ARADDR_WIDTH (ADDR_WIDTH),
+ .RDATA_WIDTH (ofs_fim_cfg_pkg::MMIO_DATA_WIDTH)
+) csr_if();
+
+// AXI4-lite to AXI-M adapter
+axi_lite2mmio axi_lite2mmio (
+ .clk (clk),
+ .rst_n (~reset),
+ .lite_if (csr_lite_if),
+ .mmio_if (csr_if)
+);
+
+//---------------------------------
+// Map AXI write/read request to CSR write/read,
+// and send the write/read response back
+//---------------------------------
+ofs_fim_axi_csr_slave #(
+ .ADDR_WIDTH (ADDR_WIDTH),
+ .USE_SLV_READY (1'b1)
+
+ ) csr_slave (
+ .csr_if (csr_if),
+
+ .csr_write (csr_write),
+ .csr_waddr (csr_waddr),
+ .csr_write_type (csr_write_type),
+ .csr_wdata (csr_wdata),
+ .csr_wstrb (csr_wstrb),
+ .csr_slv_wready (csr_slv_wready),
+ .csr_read (csr_read),
+ .csr_raddr (csr_raddr),
+ .csr_read_32b (csr_read_32b),
+ .csr_readdata (csr_readdata),
+ .csr_readdata_valid (csr_readdata_valid)
+);
+
+// Address mapping
+assign csr_addr = csr_write ? csr_waddr : csr_raddr;
+assign com_csr_address = csr_addr[5:0]; // byte address
+assign csr_slv_wready = 1'b1 ;
+// Write data mapping
+assign com_csr_writedata = csr_wdata;
+
+// Read-Write mapping
+always_comb
+begin
+ com_csr_read = 1'b0;
+ com_csr_write = 1'b0;
+ casez (csr_addr[11:6])
+ 6'h00 : begin // Common CSR
+ com_csr_read = csr_read;
+ com_csr_write = csr_write;
+ end
+ default: begin
+ com_csr_read = 1'b0;
+ com_csr_write = 1'b0;
+ end
+ endcase
+end
+
+// Read data mapping
+always_comb begin
+ if (com_csr_readdatavalid) begin
+ csr_readdata = com_csr_readdata;
+ csr_readdata_valid = 1'b1;
+ end
+ else begin
+ csr_readdata = '0;
+ csr_readdata_valid = 1'b0;
+ end
+end
+
+hello_fim_com #(
+ .FEAT_ID (FEAT_ID),
+ .FEAT_VER (FEAT_VER),
+ .NEXT_DFH_OFFSET (NEXT_DFH_OFFSET),
+ .END_OF_LIST (END_OF_LIST)
+) hello_fim_com_inst (
+ .clk (clk ),
+ .reset (reset ),
+ .writedata (com_csr_writedata ),
+ .read (com_csr_read ),
+ .write (com_csr_write ),
+ .byteenable (4'hF ),
+ .readdata (com_csr_readdata ),
+ .readdatavalid (com_csr_readdatavalid ),
+ .address (com_csr_address )
+ );
+endmodule
Create hello_fim_com.sv
file.
-touch $OFS_ROOTDIR/src/hello_fim/hello_fim_com.sv
+touch $OFS_ROOTDIR/src/hello_fim/hello_fim_com.sv
Copy the following code to hello_fim_com.sv
:
-module hello_fim_com #(
- parameter bit [11:0] FEAT_ID = 12'h001,
- parameter bit [3:0] FEAT_VER = 4'h1,
- parameter bit [23:0] NEXT_DFH_OFFSET = 24'h1000,
- parameter bit END_OF_LIST = 1'b0
-)(
-input clk,
-input reset,
-input [63:0] writedata,
-input read,
-input write,
-input [3:0] byteenable,
-output reg [63:0] readdata,
-output reg readdatavalid,
-input [5:0] address
-);
-
-wire reset_n = !reset;
-reg [63:0] rdata_comb;
-reg [63:0] scratch_reg;
-
-always @(negedge reset_n ,posedge clk)
- if (!reset_n) readdata[63:0] <= 64'h0; else readdata[63:0] <= rdata_comb[63:0];
-
-always @(negedge reset_n , posedge clk)
- if (!reset_n) readdatavalid <= 1'b0; else readdatavalid <= read;
-
-wire wr = write;
-wire re = read;
-wire [5:0] addr = address[5:0];
-wire [63:0] din = writedata [63:0];
-wire wr_scratch_reg = wr & (addr[5:0] == 6'h30)? byteenable[0]:1'b0;
-
-// 64 bit scratch register
-always @( negedge reset_n, posedge clk)
- if (!reset_n) begin
- scratch_reg <= 64'h0;
- end
- else begin
- if (wr_scratch_reg) begin
- scratch_reg <= din;
- end
-end
-
-always @ (*)
-begin
-rdata_comb = 64'h0000000000000000;
- if(re) begin
- case (addr)
- 6'h00 : begin
- rdata_comb [11:0] = FEAT_ID ; // dfh_feature_id is reserved or a constant value, a read access gives the reset value
- rdata_comb [15:12] = FEAT_VER ; // dfh_feature_rev is reserved or a constant value, a read access gives the reset value
- rdata_comb [39:16] = NEXT_DFH_OFFSET ; // dfh_dfh_ofst is reserved or a constant value, a read access gives the reset value
- rdata_comb [40] = END_OF_LIST ; //dfh_end_of_list
- rdata_comb [59:40] = 20'h00000 ; // dfh_rsvd1 is reserved or a constant value, a read access gives the reset value
- rdata_comb [63:60] = 4'h3 ; // dfh_feat_type is reserved or a constant value, a read access gives the reset value
- end
- 6'h30 : begin
- rdata_comb [63:0] = scratch_reg;
- end
- 6'h38 : begin
- rdata_comb [63:0] = 64'h6626_0701_5000_0034;
- end
- default : begin
- rdata_comb = 64'h0000000000000000;
- end
- endcase
- end
-end
-
-endmodule
+module hello_fim_com #(
+ parameter bit [11:0] FEAT_ID = 12'h001,
+ parameter bit [3:0] FEAT_VER = 4'h1,
+ parameter bit [23:0] NEXT_DFH_OFFSET = 24'h1000,
+ parameter bit END_OF_LIST = 1'b0
+)(
+input clk,
+input reset,
+input [63:0] writedata,
+input read,
+input write,
+input [3:0] byteenable,
+output reg [63:0] readdata,
+output reg readdatavalid,
+input [5:0] address
+);
+
+wire reset_n = !reset;
+reg [63:0] rdata_comb;
+reg [63:0] scratch_reg;
+
+always @(negedge reset_n ,posedge clk)
+ if (!reset_n) readdata[63:0] <= 64'h0; else readdata[63:0] <= rdata_comb[63:0];
+
+always @(negedge reset_n , posedge clk)
+ if (!reset_n) readdatavalid <= 1'b0; else readdatavalid <= read;
+
+wire wr = write;
+wire re = read;
+wire [5:0] addr = address[5:0];
+wire [63:0] din = writedata [63:0];
+wire wr_scratch_reg = wr & (addr[5:0] == 6'h30)? byteenable[0]:1'b0;
+
+// 64 bit scratch register
+always @( negedge reset_n, posedge clk)
+ if (!reset_n) begin
+ scratch_reg <= 64'h0;
+ end
+ else begin
+ if (wr_scratch_reg) begin
+ scratch_reg <= din;
+ end
+end
+
+always @ (*)
+begin
+rdata_comb = 64'h0000000000000000;
+ if(re) begin
+ case (addr)
+ 6'h00 : begin
+ rdata_comb [11:0] = FEAT_ID ; // dfh_feature_id is reserved or a constant value, a read access gives the reset value
+ rdata_comb [15:12] = FEAT_VER ; // dfh_feature_rev is reserved or a constant value, a read access gives the reset value
+ rdata_comb [39:16] = NEXT_DFH_OFFSET ; // dfh_dfh_ofst is reserved or a constant value, a read access gives the reset value
+ rdata_comb [40] = END_OF_LIST ; //dfh_end_of_list
+ rdata_comb [59:40] = 20'h00000 ; // dfh_rsvd1 is reserved or a constant value, a read access gives the reset value
+ rdata_comb [63:60] = 4'h3 ; // dfh_feat_type is reserved or a constant value, a read access gives the reset value
+ end
+ 6'h30 : begin
+ rdata_comb [63:0] = scratch_reg;
+ end
+ 6'h38 : begin
+ rdata_comb [63:0] = 64'h6626_0701_5000_0034;
+ end
+ default : begin
+ rdata_comb = 64'h0000000000000000;
+ end
+ endcase
+ end
+end
+
+endmodule
Create hello_fim_design_files.tcl
file.
-touch $OFS_ROOTDIR/src/hello_fim/hello_fim_design_files.tcl
+touch $OFS_ROOTDIR/src/hello_fim/hello_fim_design_files.tcl
Copy the following code into hello_fim_design_files.tcl
-# Copyright 2023 Intel Corporation.
-#
-# THIS SOFTWARE MAY CONTAIN PREPRODUCTION CODE AND IS PROVIDED BY THE
-# COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Hello FIM Files
-#--------------------
-set_global_assignment -name SYSTEMVERILOG_FILE $::env(BUILD_ROOT_REL)/src/hello_fim/hello_fim_com.sv
-set_global_assignment -name SYSTEMVERILOG_FILE $::env(BUILD_ROOT_REL)/src/hello_fim/hello_fim_top.sv
+# Copyright 2023 Intel Corporation.
+#
+# THIS SOFTWARE MAY CONTAIN PREPRODUCTION CODE AND IS PROVIDED BY THE
+# COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Hello FIM Files
+#--------------------
+set_global_assignment -name SYSTEMVERILOG_FILE $::env(BUILD_ROOT_REL)/src/hello_fim/hello_fim_com.sv
+set_global_assignment -name SYSTEMVERILOG_FILE $::env(BUILD_ROOT_REL)/src/hello_fim/hello_fim_top.sv
Modify $OFS_ROOTDIR/syn/board/fseries-dk/syn_top/ofs_top.qsf
to include Hello FIM module
-######################################################
-# Verilog Macros
-######################################################
-.....
-set_global_assignment -name VERILOG_MACRO "INCLUDE_HELLO_FIM" # Includes Hello FIM
+######################################################
+# Verilog Macros
+######################################################
+.....
+set_global_assignment -name VERILOG_MACRO "INCLUDE_HELLO_FIM" # Includes Hello FIM
Modify $OFS_ROOTDIR/syn/board/fseries-dk/syn_top/ofs_top_sources.tcl
to include Hello FIM design files
-###########################################
-# Design Files
-###########################################
-...
-# Subsystems
-...
-set_global_assignment -name SOURCE_TCL_SCRIPT_FILE $::env(BUILD_ROOT_REL)/src/hello_fim/hello_fim_design_files.tcl
+###########################################
+# Design Files
+###########################################
+...
+# Subsystems
+...
+set_global_assignment -name SOURCE_TCL_SCRIPT_FILE $::env(BUILD_ROOT_REL)/src/hello_fim/hello_fim_design_files.tcl
Modify $OFS_ROOTDIR/src/pd_qsys/fabric/fabric_design_files.tcl
to include BPF Hello FIM Slave IP.
-#--------------------
-# BPF
-#--------------------
-...
-set_global_assignment -name IP_FILE $::env(BUILD_ROOT_REL)/src/pd_qsys/fabric/ip/bpf/bpf_hello_fim_slv.ip
+#--------------------
+# BPF
+#--------------------
+...
+set_global_assignment -name IP_FILE $::env(BUILD_ROOT_REL)/src/pd_qsys/fabric/ip/bpf/bpf_hello_fim_slv.ip
Modify $OFS_ROOTDIR/src/includes/fabric_width_pkg.sv
to add Hello FIM slave information and update EMIF slave next offset.
-localparam bpf_hello_fim_slv_baseaddress = 'h16000; // New
-localparam bpf_hello_fim_slv_address_width = 12; // New
-localparam bpf_emif_slv_next_dfh_offset = 'h1000; // Old value: 'hB000
-localparam bpf_hello_fim_slv_next_dfh_offset = 'hA000; // New
-localparam bpf_hello_fim_slv_eol = 'b0; // New
+localparam bpf_hello_fim_slv_baseaddress = 'h16000; // New
+localparam bpf_hello_fim_slv_address_width = 12; // New
+localparam bpf_emif_slv_next_dfh_offset = 'h1000; // Old value: 'hB000
+localparam bpf_hello_fim_slv_next_dfh_offset = 'hA000; // New
+localparam bpf_hello_fim_slv_eol = 'b0; // New
@@ -6855,87 +7298,87 @@ 4.1.2 Walkthrou
-
Add bpf_hello_fim_slv_if
to AXI interfaces
-// AXI4-lite interfaces
-...
-ofs_fim_axi_lite_if #(.AWADDR_WIDTH(fabric_width_pkg::bpf_hello_fim_slv_address_width), .ARADDR_WIDTH(fabric_width_pkg::bpf_hello_fim_slv_address_width)) bpf_hello_fim_slv_if();
+// AXI4-lite interfaces
+...
+ofs_fim_axi_lite_if #(.AWADDR_WIDTH(fabric_width_pkg::bpf_hello_fim_slv_address_width), .ARADDR_WIDTH(fabric_width_pkg::bpf_hello_fim_slv_address_width)) bpf_hello_fim_slv_if();
-
Add Hello FIM instantiation
-//*******************************
-// Hello FIM Subsystem
-//*******************************
-
-`ifdef INCLUDE_HELLO_FIM
-hello_fim_top #(
- .ADDR_WIDTH (fabric_width_pkg::bpf_hello_fim_slv_address_width),
- .DATA_WIDTH (64),
- .FEAT_ID (12'h100),
- .FEAT_VER (4'h0),
- .NEXT_DFH_OFFSET (fabric_width_pkg::bpf_hello_fim_slv_next_dfh_offset),
- .END_OF_LIST (fabric_width_pkg::bpf_hello_fim_slv_eol)
-) hello_fim_top_inst (
- .clk (clk_csr),
- .reset(~rst_n_csr),
- .csr_lite_if (bpf_hello_fim_slv_if)
-);
-`else
-dummy_csr #(
- .FEAT_ID (12'h100),
- .FEAT_VER (4'h0),
- .NEXT_DFH_OFFSET (fabric_width_pkg::bpf_hello_fim_slv_next_dfh_offset),
- .END_OF_LIST (fabric_width_pkg::bpf_hello_fim_slv_eol)
-) hello_fim_dummy (
- .clk (clk_csr),
- .rst_n (rst_n_csr),
- .csr_lite_if (bpf_hello_fim_slv_if)
-);
-
-`endif
+//*******************************
+// Hello FIM Subsystem
+//*******************************
+
+`ifdef INCLUDE_HELLO_FIM
+hello_fim_top #(
+ .ADDR_WIDTH (fabric_width_pkg::bpf_hello_fim_slv_address_width),
+ .DATA_WIDTH (64),
+ .FEAT_ID (12'h100),
+ .FEAT_VER (4'h0),
+ .NEXT_DFH_OFFSET (fabric_width_pkg::bpf_hello_fim_slv_next_dfh_offset),
+ .END_OF_LIST (fabric_width_pkg::bpf_hello_fim_slv_eol)
+) hello_fim_top_inst (
+ .clk (clk_csr),
+ .reset(~rst_n_csr),
+ .csr_lite_if (bpf_hello_fim_slv_if)
+);
+`else
+dummy_csr #(
+ .FEAT_ID (12'h100),
+ .FEAT_VER (4'h0),
+ .NEXT_DFH_OFFSET (fabric_width_pkg::bpf_hello_fim_slv_next_dfh_offset),
+ .END_OF_LIST (fabric_width_pkg::bpf_hello_fim_slv_eol)
+) hello_fim_dummy (
+ .clk (clk_csr),
+ .rst_n (rst_n_csr),
+ .csr_lite_if (bpf_hello_fim_slv_if)
+);
+
+`endif
-
Add interfaces for Hello FIM slv to bpf instantiation
-bpf bpf (
-...
- .bpf_hello_fim_slv_awaddr (bpf_hello_fim_slv_if.awaddr ),
- .bpf_hello_fim_slv_awprot (bpf_hello_fim_slv_if.awprot ),
- .bpf_hello_fim_slv_awvalid (bpf_hello_fim_slv_if.awvalid ),
- .bpf_hello_fim_slv_awready (bpf_hello_fim_slv_if.awready ),
- .bpf_hello_fim_slv_wdata (bpf_hello_fim_slv_if.wdata ),
- .bpf_hello_fim_slv_wstrb (bpf_hello_fim_slv_if.wstrb ),
- .bpf_hello_fim_slv_wvalid (bpf_hello_fim_slv_if.wvalid ),
- .bpf_hello_fim_slv_wready (bpf_hello_fim_slv_if.wready ),
- .bpf_hello_fim_slv_bresp (bpf_hello_fim_slv_if.bresp ),
- .bpf_hello_fim_slv_bvalid (bpf_hello_fim_slv_if.bvalid ),
- .bpf_hello_fim_slv_bready (bpf_hello_fim_slv_if.bready ),
- .bpf_hello_fim_slv_araddr (bpf_hello_fim_slv_if.araddr ),
- .bpf_hello_fim_slv_arprot (bpf_hello_fim_slv_if.arprot ),
- .bpf_hello_fim_slv_arvalid (bpf_hello_fim_slv_if.arvalid ),
- .bpf_hello_fim_slv_arready (bpf_hello_fim_slv_if.arready ),
- .bpf_hello_fim_slv_rdata (bpf_hello_fim_slv_if.rdata ),
- .bpf_hello_fim_slv_rresp (bpf_hello_fim_slv_if.rresp ),
- .bpf_hello_fim_slv_rvalid (bpf_hello_fim_slv_if.rvalid ),
- .bpf_hello_fim_slv_rready (bpf_hello_fim_slv_if.rready ),
-...
-);
+bpf bpf (
+...
+ .bpf_hello_fim_slv_awaddr (bpf_hello_fim_slv_if.awaddr ),
+ .bpf_hello_fim_slv_awprot (bpf_hello_fim_slv_if.awprot ),
+ .bpf_hello_fim_slv_awvalid (bpf_hello_fim_slv_if.awvalid ),
+ .bpf_hello_fim_slv_awready (bpf_hello_fim_slv_if.awready ),
+ .bpf_hello_fim_slv_wdata (bpf_hello_fim_slv_if.wdata ),
+ .bpf_hello_fim_slv_wstrb (bpf_hello_fim_slv_if.wstrb ),
+ .bpf_hello_fim_slv_wvalid (bpf_hello_fim_slv_if.wvalid ),
+ .bpf_hello_fim_slv_wready (bpf_hello_fim_slv_if.wready ),
+ .bpf_hello_fim_slv_bresp (bpf_hello_fim_slv_if.bresp ),
+ .bpf_hello_fim_slv_bvalid (bpf_hello_fim_slv_if.bvalid ),
+ .bpf_hello_fim_slv_bready (bpf_hello_fim_slv_if.bready ),
+ .bpf_hello_fim_slv_araddr (bpf_hello_fim_slv_if.araddr ),
+ .bpf_hello_fim_slv_arprot (bpf_hello_fim_slv_if.arprot ),
+ .bpf_hello_fim_slv_arvalid (bpf_hello_fim_slv_if.arvalid ),
+ .bpf_hello_fim_slv_arready (bpf_hello_fim_slv_if.arready ),
+ .bpf_hello_fim_slv_rdata (bpf_hello_fim_slv_if.rdata ),
+ .bpf_hello_fim_slv_rresp (bpf_hello_fim_slv_if.rresp ),
+ .bpf_hello_fim_slv_rvalid (bpf_hello_fim_slv_if.rvalid ),
+ .bpf_hello_fim_slv_rready (bpf_hello_fim_slv_if.rready ),
+...
+);
-
Modify $OFS_ROOTDIR/src/pd_qsys/fabric/bpf.txt
to add the hello_fim
module as a slave to the apf
.
-# NAME FABRIC BASEADDRESS ADDRESS_WIDTH SLAVES
-apf mst n/a 18 fme,pcie,pmci,qsfp0,qsfp1,emif,hssi,hello_fim
-...
-hello_fim slv 0x16000 12 n/a
+# NAME FABRIC BASEADDRESS ADDRESS_WIDTH SLAVES
+apf mst n/a 18 fme,pcie,pmci,qsfp0,qsfp1,emif,hssi,hello_fim
+...
+hello_fim slv 0x16000 12 n/a
-
Execute helper script to generate BPF design files
-cd $OFS_ROOTDIR/src/pd_qsys/fabric/
-
-sh gen_fabrics.sh
+cd $OFS_ROOTDIR/src/pd_qsys/fabric/
+
+sh gen_fabrics.sh
-
@@ -6943,18 +7386,18 @@
4.1.2 Walkthrou
-
[OPTIONAL] You may verify the BPF changes have been made correctly by opening bpf.qsys
to analyze the BPF.
-cd $OFS_ROOTDIR/src/pd_qsys/fabric
-
-qsys-edit bpf.qsys --quartus-project=$OFS_ROOTDIR/syn/board/fseries-dk/syn_top/ofs_top.qpf
+cd $OFS_ROOTDIR/src/pd_qsys/fabric
+
+qsys-edit bpf.qsys --quartus-project=$OFS_ROOTDIR/syn/board/fseries-dk/syn_top/ofs_top.qpf
Find the bpf_hello_fim_slv
instance:

-
Compile the Hello FIM design
-cd $OFS_ROOTDIR
-
-./ofs-common/scripts/common/syn/build_top.sh -p fseries-dk work_fseries-dk_hello_fim
+cd $OFS_ROOTDIR
+
+./ofs-common/scripts/common/syn/build_top.sh -p fseries-dk work_fseries-dk_hello_fim
@@ -6977,132 +7420,132 @@ ...
-typedef enum {
- FME_DFH_IDX,
- THERM_MNGM_DFH_IDX,
- GLBL_PERF_DFH_IDX,
- GLBL_ERROR_DFH_IDX,
- QSFP0_DFH_IDX,
- QSFP1_DFH_IDX,
- HSSI_DFH_IDX,
- EMIF_DFH_IDX,
- HELLO_FIM_DFH_IDX, // New
- PMCI_DFH_IDX,
- ST2MM_DFH_IDX,
- VUART_DFH_IDX,
- PG_PR_DFH_IDX,
- PG_PORT_DFH_IDX,
- PG_USER_CLK_DFH_IDX,
- PG_REMOTE_STP_DFH_IDX,
- AFU_ERR_DFH_IDX,
- MAX_DFH_IDX
-} t_dfh_idx;
-...
+...
+typedef enum {
+ FME_DFH_IDX,
+ THERM_MNGM_DFH_IDX,
+ GLBL_PERF_DFH_IDX,
+ GLBL_ERROR_DFH_IDX,
+ QSFP0_DFH_IDX,
+ QSFP1_DFH_IDX,
+ HSSI_DFH_IDX,
+ EMIF_DFH_IDX,
+ HELLO_FIM_DFH_IDX, // New
+ PMCI_DFH_IDX,
+ ST2MM_DFH_IDX,
+ VUART_DFH_IDX,
+ PG_PR_DFH_IDX,
+ PG_PORT_DFH_IDX,
+ PG_USER_CLK_DFH_IDX,
+ PG_REMOTE_STP_DFH_IDX,
+ AFU_ERR_DFH_IDX,
+ MAX_DFH_IDX
+} t_dfh_idx;
+...
-
Add HELLO_FIM_DFH
to get_dfh_names
function.
-...
-function automatic dfh_name[MAX_DFH_IDX-1:0] get_dfh_names();
-...
- dfh_names[PMCI_DFH_IDX] = "PMCI_DFH";
- dfh_names[HELLO_FIM_DFH_IDX] = "HELLO_FIM_DFH"; // New
- dfh_names[ST2MM_DFH_IDX] = "ST2MM_DFH";
-...
-return dfh_names;
-...
+...
+function automatic dfh_name[MAX_DFH_IDX-1:0] get_dfh_names();
+...
+ dfh_names[PMCI_DFH_IDX] = "PMCI_DFH";
+ dfh_names[HELLO_FIM_DFH_IDX] = "HELLO_FIM_DFH"; // New
+ dfh_names[ST2MM_DFH_IDX] = "ST2MM_DFH";
+...
+return dfh_names;
+...
-
Add expected DFH value for Hello FIM to the get_dfh_values
function.
-...
-function automatic [MAX_DFH_IDX-1:0][63:0] get_dfh_values();
-...
- dfh_values[PMCI_DFH_IDX] = 64'h3_00000_xxxxxx_1012;
- dfh_values[PMCI_DFH_IDX][39:16] = fabric_width_pkg::bpf_pmci_slv_next_dfh_offset;
-
- dfh_values[HELLO_FIM_DFH_IDX] = 64'h3_00000_xxxxxx_0100; // New
- dfh_values[HELLO_FIM_DFH_IDX][39:16] = fabric_width_pkg::bpf_hello_fim_slv_next_dfh_offset; // New
-
- dfh_values[ST2MM_DFH_IDX] = 64'h3_00000_xxxxxx_0014;
- dfh_values[ST2MM_DFH_IDX][39:16] = fabric_width_pkg::apf_st2mm_slv_next_dfh_offset;
-...
-return dfh_values;
-...
+...
+function automatic [MAX_DFH_IDX-1:0][63:0] get_dfh_values();
+...
+ dfh_values[PMCI_DFH_IDX] = 64'h3_00000_xxxxxx_1012;
+ dfh_values[PMCI_DFH_IDX][39:16] = fabric_width_pkg::bpf_pmci_slv_next_dfh_offset;
+
+ dfh_values[HELLO_FIM_DFH_IDX] = 64'h3_00000_xxxxxx_0100; // New
+ dfh_values[HELLO_FIM_DFH_IDX][39:16] = fabric_width_pkg::bpf_hello_fim_slv_next_dfh_offset; // New
+
+ dfh_values[ST2MM_DFH_IDX] = 64'h3_00000_xxxxxx_0014;
+ dfh_values[ST2MM_DFH_IDX][39:16] = fabric_width_pkg::apf_st2mm_slv_next_dfh_offset;
+...
+return dfh_values;
+...
-
Generate simulation files
-cd $OFS_ROOTDIR/ofs-common/scripts/common/sim
-
-./gen_sim_files.sh fseries-dk
+cd $OFS_ROOTDIR/ofs-common/scripts/common/sim
+
+./gen_sim_files.sh fseries-dk
-
Run DFH Walker Simulation
-
cd $OFS_ROOTDIR/ofs-common/scripts/common/sim
-
-sh run_sim.sh TEST=dfh_walker
+ cd $OFS_ROOTDIR/ofs-common/scripts/common/sim
+
+sh run_sim.sh TEST=dfh_walker
-
Verify that the test passes, and that the output shows the Hello FIM in the DFH sequence
-********************************************
- Running TEST(0) : test_dfh_walking
-********************************************
-...
-
-READ64: address=0x00015000 bar=0 vf_active=0 pfn=0 vfn=0
-
- ** Sending TLP packets **
- ** Waiting for ack **
- READDATA: 0x3000000010001009
-
-EMIF_DFH
- Address (0x15000)
- DFH value (0x3000000010001009)
-
-READ64: address=0x00016000 bar=0 vf_active=0 pfn=0 vfn=0
-
- ** Sending TLP packets **
- ** Waiting for ack **
- READDATA: 0x30000000a0000100
-
-HELLO_FIM_DFH
- Address (0x16000)
- DFH value (0x30000000a0000100)
-
-READ64: address=0x00020000 bar=0 vf_active=0 pfn=0 vfn=0
-
- ** Sending TLP packets **
- ** Waiting for ack **
- READDATA: 0x3000000200001012
-
-PMCI_DFH
- Address (0x20000)
- DFH value (0x3000000200001012)
-
-...
-
-Test status: OK
-
-********************
- Test summary
-********************
- test_dfh_walking (id=0) - pass
-Test passed!
-Assertion count: 0
-$finish called from file "/home/ofs-agx7-pcie-attach/sim/unit_test/scripts/../../bfm/rp_bfm_simple/tester.sv", line 210.
-$finish at simulation time 356791250000
- V C S S i m u l a t i o n R e p o r t
-Time: 356791250000 fs
-CPU Time: 61.560 seconds; Data structure size: 47.4Mb
-Tue Aug 15 16:29:45 2023
-run_sim.sh: USER_DEFINED_SIM_OPTIONS +vcs -l ./transcript
-run_sim.sh: run_sim.sh DONE!
+********************************************
+ Running TEST(0) : test_dfh_walking
+********************************************
+...
+
+READ64: address=0x00015000 bar=0 vf_active=0 pfn=0 vfn=0
+
+ ** Sending TLP packets **
+ ** Waiting for ack **
+ READDATA: 0x3000000010001009
+
+EMIF_DFH
+ Address (0x15000)
+ DFH value (0x3000000010001009)
+
+READ64: address=0x00016000 bar=0 vf_active=0 pfn=0 vfn=0
+
+ ** Sending TLP packets **
+ ** Waiting for ack **
+ READDATA: 0x30000000a0000100
+
+HELLO_FIM_DFH
+ Address (0x16000)
+ DFH value (0x30000000a0000100)
+
+READ64: address=0x00020000 bar=0 vf_active=0 pfn=0 vfn=0
+
+ ** Sending TLP packets **
+ ** Waiting for ack **
+ READDATA: 0x3000000200001012
+
+PMCI_DFH
+ Address (0x20000)
+ DFH value (0x3000000200001012)
+
+...
+
+Test status: OK
+
+********************
+ Test summary
+********************
+ test_dfh_walking (id=0) - pass
+Test passed!
+Assertion count: 0
+$finish called from file "/home/ofs-agx7-pcie-attach/sim/unit_test/scripts/../../bfm/rp_bfm_simple/tester.sv", line 210.
+$finish at simulation time 356791250000
+ V C S S i m u l a t i o n R e p o r t
+Time: 356791250000 fs
+CPU Time: 61.560 seconds; Data structure size: 47.4Mb
+Tue Aug 15 16:29:45 2023
+run_sim.sh: USER_DEFINED_SIM_OPTIONS +vcs -l ./transcript
+run_sim.sh: run_sim.sh DONE!
@@ -7119,12 +7562,12 @@ 4.1.4
-
[OPTIONAL] In the work directory where the FIM was compiled, determine the PR Interface ID of your design. You can use this value at the end of the walkthrough to verify that the design has been configured to the FPGA.
-cd $OFS_ROOTDIR/<work_directory>/syn/board/fseries-dk/syn_top/
-
-cat fme-ifc-id.txt
+cd $OFS_ROOTDIR/<work_directory>/syn/board/fseries-dk/syn_top/
+
+cat fme-ifc-id.txt
Example output:
-98ed516f-d24d-5b71-ae12-e78cd641e4be
+98ed516f-d24d-5b71-ae12-e78cd641e4be
-
@@ -7135,50 +7578,50 @@
4.1.4
-
Run fpgainfo
to determine the PCIe B:D.F of your board, and to verify the PR Interface ID matches the ID you found in Step 1.
-fpgainfo fme
+
Example output:
-Intel Acceleration JTAG PCI Development Kit
-//****** FME ******//
-Interface : DFL
-Object Id : 0xEF00001
-PCIe s:b:d.f : 0000:B1:00.0
-Vendor Id : 0x8086
-Device Id : 0xBCCE
-SubVendor Id : 0x8086
-SubDevice Id : 0x0001
-Socket Id : 0x00
-Ports Num : 01
-Bitstream Id : 360571656856467345
-Bitstream Version : 5.0.1
-Pr Interface Id : 98ed516f-d24d-5b71-ae12-e78cd641e4be
-Boot Page : user
+Intel Acceleration JTAG PCI Development Kit
+//****** FME ******//
+Interface : DFL
+Object Id : 0xEF00001
+PCIe s:b:d.f : 0000:B1:00.0
+Vendor Id : 0x8086
+Device Id : 0xBCCE
+SubVendor Id : 0x8086
+SubDevice Id : 0x0001
+Socket Id : 0x00
+Ports Num : 01
+Bitstream Id : 360571656856467345
+Bitstream Version : 5.0.1
+Pr Interface Id : 98ed516f-d24d-5b71-ae12-e78cd641e4be
+Boot Page : user
-
Initialize opae.io
-sudo opae.io init -d <B:D.F>
+