Intel® Quartus® Prime Pro Edition用户指南: 部分重配置

ID 683834
日期 5/11/2020
Public
文档目录

2.8.4. Intel® Arria® 10和 Intel® Cyclone® 10 GX PR控制模块仿真模型

Intel® Quartus® Prime Pro Edition软件支持对部分重配置比特流到PR控制模块的传输的仿真。此仿真使您能够在可重配置的分区中观察到结果变化和中间效果。

Intel® Arria® 10 Intel® Cyclone® 10 GX PR控制模块支持PR仿真。发送一个仿真RBF (PR比特流)可使PR控制模块相应地运行至PR仿真成功或者PR仿真失败。要激活PR区域仿真wrapper中一个特定PR角色的仿真,使用一个在仿真RBF中编码的PR ID以及PR控制模块。作为独立仿真或者Partial Reconfiguration Controller IP core仿真文件集的一部分对PR控制模块进行仿真。

图 75. PR控制模块仿真模型

PR控制模块仿真模型包含两个额外的simulation-only端口—sim_statesim_pr_id。将这些仿真端口和其他端口连接到twentynm_prblock_if SystemVerilog接口。此连接支持使用测试台的PR控制模块监控器对PR控制模块进行监控。当生成Partial Reconfiguration IP core的仿真文件集时, Intel® Quartus® Prime软件自动例化twentynm_prblock_if接口。如下例所示,获得一个到twentynm_prblock_if的参考,twentynm_prblock_if是IP使用alt_pr_test_pkg::twentynm_prblock_if_mgr singleton进行例化:

virtual twentynm_prblock_if prblock_if;

alt_pr_test_pkg::twentynm_prblock_if_mgr cb_mgr;

// Get the PR control block from the prblock manager
cb_mgr = alt_pr_test_pkg::twentynm_prblock_if_mgr::get();
prblock_if = cb_mgr.if_ref;
twentynm_prblock_if接口的代码如下:
interface twentynm_prblock_if(input logic pr_clk, input logic clk);

    logic prrequest;
    logic [31:0] data;
    wire error;
    wire ready;
    wire done;
    logic [31:0] sim_only_state;
    wire [31:0] sim_only_pr_id;

    // All signals are async except data
	clocking cb1 @(posedge pr_clk);
        output data;
    endclocking
    
endinterface : twentynm_prblock_if
关于twentynm_prblock_if接口的详细信息,请参考<installation directory> /eda/sim_lib/altera_lnsim.sv文件。
PR控制模块仿真模型的仿真状态代表控制模块的PR_EVENT_TYPE枚举状态。twentynm_prblock_test_pkg SystemVerilog package定义这些枚举。这些状态代表控制模块所支持的不同的状态。定义的控制模块枚举是:
package twentynm_prblock_test_pkg;
    typedef enum logic [31:0] {
        NONE,
        IDLE,
        PR_REQUEST,
        PR_IN_PROGRESS,
        PR_COMPLETE_SUCCESS,
        PR_COMPLETE_ERROR,
        PR_INCOMPLETE_EARLY_WITHDRAWL,
        PR_INCOMPLETE_LATE_WITHDRAWL
    } PR_EVENT_TYPE;

当仿真状态为PR_IN_PROGRESS时,受影响的PR区域必须通过置位pr_activate 信号将其仿真输出多路复用器驱动为X。此操作在部分重配置期间仿真PR区域的未知输出。此外,您必须在PR仿真模型中置位pr_activate信号以通过PR激活值加载PR模型中的所有寄存器。

一旦仿真状态达到PR_COMPLETE_SUCCESS,使用相应的PR区域仿真wrapper mux sel信号来激活相应的PR角色。您可以解码此区域以及从PR控制模块的sim_only_pr_id信号解码特定的选择信号。

表 63.  仿真RBF中所要求的字顺序步骤1写入零或者以下多个字。所有其他步骤仅写入1个字。
1 zero padding blocks 0x00000000
2 PR_HEADER_WORD 0x0000A65C
3 PR_ID 32-bit user ID
4 PRDATA_COUNT_0 0x01234567
5 PRDATA_COUNT_1 0x89ABCDEF
6 PRDATA_COUNT_2 0x02468ACE
7 PRDATA_COUNT_3 0x13579BDF
注: PR_ID字是sim_only_pr_id字上的输出,开始于PRDATA_COUNT_0。对header或者data count使用不同的值会导致PR仿真错误。