VARON IP的生成、连接、嵌入与执行

嵌入VARON IP

VARON的第一步是在生成VARON IP之前创建具有探测信号列表的配置文件。 VARON IP由Verilog HDL编写,允许用户使用用户电路进行仿真。生成完成,并使用VARON IP运行RTL仿真并执行性能分析。

1. varon_ip_tool命令

“varon_ip_tool”命令是VARON生成并连接到用户电路命令。该命令需要配置文件和用户创建的连接文件。

“varon_ip_tool”的帮助信息如下所示。

 

% varon_ip_tool -help

用法: varon_ip_tool [options]

 

选项: 

-h,                    --帮助                                                                        显示此帮助

-g,                    --generate                                                                   VARON IP生成器

-c,                     --configuration                                                          VARON IP 配置

<varon_ip_configration_file.json>                                                   JSON 文件 [输入]

-i,                      --inject                                                                      VARON IP 导入器

-f,                    --connection <varon_ip_connection_file.json>    VARON IP 连接JSON文件

-d,                     --libdir </path/co/script/directory>                       脚本运行的路径。

 

“-g”选项用于VARON IP生成。 “-i”选项是将VARON与用户电路连接的连接选项。“-g”选项的配置文件和“-i”选项的连接文件应以JSON格式描述。有关JSON格式的文件说明,请参阅“ 2 VARON IP生成”和“ 3 VARON IP连接”。

2. VARON IP生成

VARON IP生成的第一步是准备配置文件。 用户应使用JSON格式的VARON IP生成参数准备配置文件。VARON仿真版本包含示例配置文件,该文件允许用户作为创建配置文件的起点来满足设计。 带有配置文件的“ varon_ip_tool”命令生成VARON IP RTL。

以下是描述的设置参数

•设置执行环境

•设置VARON IP

•设置总线结构

•设置总线端口组,端口

2.1 VARON IP 生成参数

下表显示了VARON IP配置文件的生成参数。

参数

类型

描述

执行环境设置

rtl_output_directory

string

指定VARON IP输出目录

remove_files_in_output_directory_

before_execution

true/false

在生成VARON IP之前控制“rtl_output_directory”目录中文件的删除。

VARON IP设置

VARON_IP_MODULE_NAME_HEADER

string

添加到VARON IP的模块名称RTL开头的字符串, 通常使用“ VARON_”。 该参数允许用户避免将模块名称连接到用户电路。

ip_type

string

VARON 仿真版本仅支持“仿真”部分。

clock_counter_width

bit width

指定VARON IP内的时钟计数器的位宽。 通常是32位。 当仿真时间超过32位时,请将其更改为较大的值。

time_stamp_width

bit width

VARON IP中时间戳的位宽。 禁止使用16以外的值。

time_stamp_trace_output_period

bit width

触发数据的时间戳的位设置,该数据显示了VARON IP内部正在使用的时间。 通常为1,请使用15。

unit_time_counter_width

bit width

指定单位时间计数器的位宽。通常32位,不要更改。只有单位时间超过32位的情况下,才能从32更改为更大的值。

buffer_type

string

禁止使用“unified”以外的值。

buffer_size

word size

禁止使用2048以外的值。

总线结构设置

bus_configuration

bit width

JSON排列数据格式。 描述了端口组的数字数组元素。

bus_configuration[n]

port number

“n”表示端口组描述的数组数据的每个元素。 指定端口组的“generator_parameter”部分。“port_list”部分按照JSON数组数据格式描述为端口中的数字数组元素。

端口组的设置(bus_configuration[n].generator_parameter)

group_id

group number

指定端口组的编号。 必须与数组元素的索引匹配。 (每个元素从0和+1开始。禁止不连续组编号。)

axi_version

3 | 4

指定端口组的AXI总线的版本。 可能的值为3或4。

axi_id_width

bit width

指定端口组的AXI ID的位宽。

clock_type

string

将时钟类型指定为“main”或“async”。 “main”表示VARON将端口组的ACLK用作VARON基本时钟。 第一个ACLK端口组应为“ main”。 GUI使用“main”端口组的时间戳作为基本时钟。 如果时钟与基本时钟不同,请指定“async”。

clock_period

period

将端口组的时钟周期指定为ns单位。

data_width

bit width

指定端口组的数据总线的位宽。

端口设置(port_list[n])

port_id

port

number

指定端口号。 必须与数组元素的索引匹配。 (每个元素从0和+1开始。不连续端口号是禁止的。)

port_name

port name

(string)

指定"group<group number>_port< 3 digits of port number> _%s"。禁止使用其他字符串。

type

string

请使用“ latency_counter”而不进行更改。

axi_id_fixed_part_width

bit width

指定不变的AXI ID高位的位宽。 例如,当AXI ID的位宽为8位,而高5位始终为0时,将此参数设置为5。

buffer_index_size

buffer size

在VARON IP的总线监视器中指定缓冲区大小。 表达式为(axi_id_width - axi_id_fixed_part_width)

+ ceil (log2 (the maximum outstanding

value per 1 ID))。

out_of_order_completion

1 | 0

请使用默认值1不需更改。

2.2 配置文件的例子

以下是配置文件示例。 该文件以varon_ip_configuration_file.json的形式提供。

{

    "rtl_output_directory": "./VARON_IP_RTL",

    "remove_files_in_output_directory_before_execution": true,

 

    "generator_parameter": {

        "VARON_IP_MODULE_NAME_HEADER":     "VARON_"

    },

 

    "varon_configuration": {

        "generator_parameter": {

            "ip_type":                                "simulation",

            "clock_counter_width":                   32,

            "time_stamp_width":                     16,

            "time_stamp_trace_output_period":         15,

            "unit_time_counter_width":               32,

            "buffer_type":                          "unified",

            "buffer_size":                           2048

        },

        "bus_configuration": [

            {

                "generator_parameter": {

                      "group_id":                  0,

                      "axi_version":                3,

                      "axi_id_width":               4,

                      "clock_type":                 "main",

                      "clock_period":               10,

                      "data_width":                 32

                },

                "port_list":[

                    {

                        "port_id":                  0,

                        "port_name":               "group0_port000_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  1,

                        "port_name":               "group0_port001_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  2,

                        "port_name":               "group0_port002_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  3,

                        "port_name":               "group0_port003_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    }

                ]

            },

            {

                "generator_parameter": {

                      "group_id":                  1,

                      "axi_version":                3,

                      "axi_id_width":               4,

                      "clock_type":                 "main",

                      "clock_period":               10,

                      "data_width":                 32

                },

                "port_list":[

                    {

                        "port_id":                  0,

                        "port_name":               "group1_port000_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  1,

                        "port_name":               "group1_port001_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  2,

                        "port_name":               "group1_port002_%s",

                        "type":                     "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  3,

                        "port_name":               "group1_port003_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      1,

                          "buffer_index_size":            4,

                          "out_of_order_completion":      1

                        }

                    }

                ]

            },

            {

                "generator_parameter": {

                      "group_id":                  2,

                      "axi_version":                3,

                      "axi_id_width":               7,

                      "clock_type":                 "main",

                      "clock_period":               10,

                      "data_width":                 32

                },

                "port_list":[

                    {

                        "port_id":                  0,

                        "port_name":               "group2_port000_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      0,

                          "buffer_index_size":            7,

                          "out_of_order_completion":      1

                        }

                    },

                    {

                        "port_id":                  1,

                        "port_name":               "group2_port001_%s",

                        "type":                    "latency_counter",

                        "generator_parameter": {

                          "axi_id_fixed_part_width":      0,

                          "buffer_index_size":            7,

                          "out_of_order_completion":      1

                        }

                    }

                ]

            }

        ]

    }

}

2.3 VARON IP生成

VARON IP生成与创建的配置文件,请使用“varon_ip_tool -g”命令指定VARON IP工具提供的库目录。

        ·执行命令:
                 varon_ip_tool -g -d <VARON ip_tool Library Directory> -c <Configuration File>

        ·示例:

                 varon_ip_tool -g -d /usr/lib64/varon_monitor_gui/ip_tool -c varon_ip_configuration_file.json

执行后,将RTL文件生成到配置文件中指定的“ RTL_output_directory”目录中。

使用VARON IP生成命令需要有效的许可证。 首次使用VARON生成和注入命令时,请先启动VARON Monitor,然后设置IP地址和许可证服务器的端口号。 许可证服务器设置完成后,将在用户的主目录中生成“ .varon_server_ip_port”文件,其中包含IP地址和端口号。

3. VARON IP连接

VARON IP应该插入目标用户的设计中。 以JSON格式编写的连接文件需要连接VARON IP信号和用户的设计。 执行“ varon_ip_tool”命令会生成带有嵌入式VARON IP的用户RTL文件。

用户可以选择插入VARON IP的层次结构,1)可以看到AXI总线信号的层次结构,2)较高层次结构。 VARON IP只能是用户设计中的一种。 VARON IP插入命令应读取目标用户的设计源文件以执行,从VARON IP插入的层次结构到可以看到AXI总线信号的下一层结构(命令需要了解方向和位宽)。

下表显示VARON IP连接参数

参数

类型

描述

为执行环境设置

target_design_diretory

string

指定用户设计的RTL所在的目录名称。 可以用数组格式描述多个目录。 可以读取指定目录中和子目录下的所有RTL文件。 在没有指定目录的情况下,输入没有空数组。

ignore_diretory

string

在上面指定的目录中指定ignore子目录。阅读更多RTL文件会使命令处理时间更长。包含RTL AI的VARON目录。

target_design_RTL_file

string

指定用户电路的RTL文件名。注意,即使用户在此处指定,命令也无法访问“忽略目录”下的文件。

top_module

string

指定插入VARON IP的用户设计模块名称。

VARON_RTL

string

指定VARON IP顶部模块的“文件名”。

VARON_module

string

指定VARON IP顶部模块名称。 默认值为“VARON_TOP”。 用户在VARON IP生成上更改了

VARON_IP_MODULE_NAME_HEADER,也需要在此处更改。

instance_name_header

string

指定实例名称的标题字符串,它是自动生成的连接脚本。 在示例连接文件中定义了“i_”,这意味着VARON IP TOP的实例名称将为“i_VARON_TOP”。

net_name_header

string

指定网络名称的标题字符串,该名称是连接脚本自动生成的。 在示例文件中定义了“n_”。

RTL_output_directory

string

指定连接脚本生成RTL文件的目录。

updated_module_list_file

string

指定连接脚本生成更新信息文件的文件名。此文件格式为JSON。

connection_list

connection

通过JSON数组数据格式指定VARON IP的每个端口和连接网络名称。

用于解释连接的项

Port

string

指定VARON IP的端口名称。

Net

string

指定连接的网络名称,连接网络的格式如下表所示。

fixed_value

string

指定VARON IP的端口名称。

用于解释连接网络的项

name

string

指定网络名。

hierarchy

string

指定网络的层次结构名称。 层次结构应该是用户设计模块插入VARON IP(在top_module参数上指定)的相对路径。 层次结构分隔符为“ /”。

下表显示了描述端口和网络连接格式的示例。

项目

描述格式

在VARON IP的相同层次结构中将端口与网络连接

{“ port”:”port name”, “ net”: {“ name”: “net name”}}

在VARON IP层次结构下将端口与网络连接

{“ port”:”port name”, “ net”: {“ name”: “net name”,

“ hierarchy”:”hierarchy 1/hierarchy 2/hierarchy 3”}}

指定VARON IP端口的固定值(例如,AXI4Lite的突发长度)

{“ port”:”port name”, “ fixed_value”: Verilog fixed

value explanation}3

3.1 连接文件示例

下表显示了示例连接文件。 该示例文件以varon_ip_connection_file.json的形式提供。

{

    "target_design_directory": [

        "./DUT/generated_RTL",

        "./DUT/submodules",

        "./DUT/AXIC/",

        "./DUT/lib"

    ],

 

    "ignore_directory": [

    ],

 

    "target_design_RTL_file": [

    ],

 

    "top_module":   "DUTTOP",

 

    "VARON_RTL": [

        "./VARON_IP_RTL/VARON_TOP .v"

    ],

 

    "VARON_module": "VARON_TOP",

 

    "instance_name_header": "i_",

    "net_name_header": "n_",

 

    "RTL_output_directory":    "./updated_RTL",

    "updated_module_list_file": "./updated_module_list.json",

    

    "connection_list": [

        {"port": "group0_ACLK",                "net":{"name":"ACLK"}},

        {"port": "group0_ARESETn",             "net":{"name":"ARESETn"}},

        {"port": "group0_port000_ARVALID",     "net":{"name":"master_port000_ARVALID"}},

        {"port": "group0_port000_ARREADY",     "net":{"name":"master_port000_ARREADY"}},

        {"port": "group0_port000_ARID",        "net":{"name":"master_port000_ARID"}},

        {"port": "group0_port000_ARLEN",       "net":{"name":"master_port000_ARLEN"}},

        {"port": "group0_port000_RVALID",      "net":{"name":"master_port000_RVALID"}},

        {"port": "group0_port000_RREADY",      "net":{"name":"master_port000_RREADY"}},

        {"port": "group0_port000_RLAST",       "net":{"name":"master_port000_RLAST"}},

        {"port": "group0_port000_RID",         "net":{"name":"master_port000_RID"}},

        {"port": "group0_port000_AWVALID",     "net":{"name":"master_port000_AWVALID"}},

        {"port": "group0_port000_AWREADY",     "net":{"name":"master_port000_AWREADY"}},

        {"port": "group0_port000_AWID",        "net":{"name":"master_port000_AWID"}},

        {"port": "group0_port000_AWLEN",       "net":{"name":"master_port000_AWLEN"}},

        {"port": "group0_port000_WVALID",      "net":{"name":"master_port000_WVALID"}},

        {"port": "group0_port000_WREADY",      "net":{"name":"master_port000_WREADY"}},

        {"port": "group0_port000_WLAST",       "net":{"name":"master_port000_WLAST"}},

        {"port": "group0_port000_WID",         "net":{"name":"master_port000_WID"}},

        {"port": "group0_port000_BVALID",      "net":{"name":"master_port000_BVALID"}},

        {"port": "group0_port000_BREADY",      "net":{"name":"master_port000_BREADY"}},

        {"port": "group0_port000_BID",         "net":{"name":"master_port000_BID"}},

        {"port": "group0_port001_ARVALID",     "net":{"name":"master_port001_ARVALID"}},

        {"port": "group0_port001_ARREADY",     "net":{"name":"master_port001_ARREADY"}},

        {"port": "group0_port001_ARID",        "net":{"name":"master_port001_ARID"}},

        {"port": "group0_port001_ARLEN",       "net":{"name":"master_port001_ARLEN"}},

        {"port": "group0_port001_RVALID",      "net":{"name":"master_port001_RVALID"}},

        {"port": "group0_port001_RREADY",      "net":{"name":"master_port001_RREADY"}},

        {"port": "group0_port001_RLAST",       "net":{"name":"master_port001_RLAST"}},

        {"port": "group0_port001_RID",         "net":{"name":"master_port001_RID"}},

        {"port": "group0_port001_AWVALID",     "net":{"name":"master_port001_AWVALID"}},

        {"port": "group0_port001_AWREADY",     "net":{"name":"master_port001_AWREADY"}},

        {"port": "group0_port001_AWID",        "net":{"name":"master_port001_AWID"}},

        {"port": "group0_port001_AWLEN",       "net":{"name":"master_port001_AWLEN"}},

        {"port": "group0_port001_WVALID",      "net":{"name":"master_port001_WVALID"}},

        {"port": "group0_port001_WREADY",      "net":{"name":"master_port001_WREADY"}},

        {"port": "group0_port001_WLAST",       "net":{"name":"master_port001_WLAST"}},

        {"port": "group0_port001_WID",         "net":{"name":"master_port001_WID"}},

        {"port": "group0_port001_BVALID",      "net":{"name":"master_port001_BVALID"}},

        {"port": "group0_port001_BREADY",      "net":{"name":"master_port001_BREADY"}},

        {"port": "group0_port001_BID",         "net":{"name":"master_port001_BID"}},

        {"port": "group0_port002_ARVALID",     "net":{"name":"master_port002_ARVALID"}},

        {"port": "group0_port002_ARREADY",     "net":{"name":"master_port002_ARREADY"}},

        {"port": "group0_port002_ARID",        "net":{"name":"master_port002_ARID"}},

        {"port": "group0_port002_ARLEN",       "net":{"name":"master_port002_ARLEN"}},

        {"port": "group0_port002_RVALID",      "net":{"name":"master_port002_RVALID"}},

        {"port": "group0_port002_RREADY",      "net":{"name":"master_port002_RREADY"}},

        {"port": "group0_port002_RLAST",       "net":{"name":"master_port002_RLAST"}},

        {"port": "group0_port002_RID",         "net":{"name":"master_port002_RID"}},

        {"port": "group0_port002_AWVALID",     "net":{"name":"master_port002_AWVALID"}},

        {"port": "group0_port002_AWREADY",     "net":{"name":"master_port002_AWREADY"}},

        {"port": "group0_port002_AWID",        "net":{"name":"master_port002_AWID"}},

        {"port": "group0_port002_AWLEN",       "net":{"name":"master_port002_AWLEN"}},

        {"port": "group0_port002_WVALID",      "net":{"name":"master_port002_WVALID"}},

        {"port": "group0_port002_WREADY",      "net":{"name":"master_port002_WREADY"}},

        {"port": "group0_port002_WLAST",       "net":{"name":"master_port002_WLAST"}},

        {"port": "group0_port002_WID",         "net":{"name":"master_port002_WID"}},

        {"port": "group0_port002_BVALID",      "net":{"name":"master_port002_BVALID"}},

        {"port": "group0_port002_BREADY",      "net":{"name":"master_port002_BREADY"}},

        {"port": "group0_port002_BID",         "net":{"name":"master_port002_BID"}},

        {"port": "group0_port003_ARVALID",     "net":{"name":"master_port003_ARVALID"}},

        {"port": "group0_port003_ARREADY",     "net":{"name":"master_port003_ARREADY"}},

        {"port": "group0_port003_ARID",        "net":{"name":"master_port003_ARID"}},

        {"port": "group0_port003_ARLEN",       "net":{"name":"master_port003_ARLEN"}},

        {"port": "group0_port003_RV ALID",      "net":{"name":"master_port003_RVALID"}},

        {"port": "group0_port003_RREADY",      "net":{"name":"master_port003_RREADY"}},

        {"port": "group0_port003_RLAST",       "net":{"name":"master_port003_RLAST"}},

        {"port": "group0_port003_RID",         "net":{"name":"master_port003_RID"}},

        {"port": "group0_port003_AWVALID",     "net":{"name":"master_port003_AWVALID"}},

        {"port": "group0_port003_AWREADY",     "net":{"name":"master_port003_AWREADY"}},

        {"port": "group0_port003_AWID",        "net":{"name":"master_port003_AWID"}},

        {"port": "group0_port003_AWLEN",       "net":{"name":"master_port003_AWLEN"}},

        {"port": "group0_port003_WVALID",      "net":{"name":"master_port003_WVALID"}},

        {"port": "group0_port003_WREADY",      "net":{"name":"master_port003_WREADY"}},

        {"port": "group0_port003_WLAST",       "net":{"name":"master_port003_WLAST"}},

        {"port": "group0_port003_WID",         "net":{"name":"master_port003_WID"}},

        {"port": "group0_port003_BVALID",      "net":{"name":"master_port003_BVALID"}},

        {"port": "group0_port003_BREADY",      "net":{"name":"master_port003_BREADY"}},

        {"port": "group0_port003_BID",         "net":{"name":"master_port003_BID"}},

 

        .. abbreviation

        {"port": "group0_external_unit_time_period_in",  "fixed_value":"1'b0"},

        {"port": "group1_ACLK",                "net":{"name":"ACLK"}},

        {"port": "group1_ARESETn",             "net":{"name":"ARESETn"}},

        {"port": "group2_ACLK",                "net":{"name":"ACLK"}},

        {"port": "group2_ARESETn",             "net":{"name":"ARESETn"}},

        {"port": "group2_port000_ARV ALID",     "net":{"name":"slave_port000_ARV ALID"}},

        {"port": "group2_port000_ARREADY",     "net":{"name":"slave_port000_ARREADY"}},

        {"port": "group2_port000_ARID",        "net":{"name":"slave_port000_ARID"}},

        {"port": "group2_port000_ARLEN",       "net":{"name":"slave_port000_ARLEN"}},

        {"port": "group2_port000_RV ALID",      "net":{"name":"slave_port000_RV ALID"}},

        {"port": "group2_port000_RREADY",      "net":{"name":"slave_port000_RREADY"}},

        {"port": "group2_port000_RLAST",       "net":{"name":"slave_port000_RLAST"}},

        {"port": "group2_port000_RID",         "net":{"name":"slave_port000_RID"}},

        {"port": "group2_port000_AWV ALID",     "net":{"name":"slave_port000_AWV ALID"}},

        {"port": "group2_port000_AWREADY",     "net":{"name":"slave_port000_AWREADY"}},

        {"port": "group2_port000_AWID",        "net":{"name":"slave_port000_AWID"}},

        {"port": "group2_port000_AWLEN",       "net":{"name":"slave_port000_AWLEN"}},

        {"port": "group2_port000_WV ALID",      "net":{"name":"slave_port000_WV ALID"}},

        {"port": "group2_port000_WREADY",      "net":{"name":"slave_port000_WREADY"}},

        {"port": "group2_port000_WLAST",       "net":{"name":"slave_port000_WLAST"}},

        {"port": "group2_port000_WID",         "net":{"name":"slave_port000_WID"}},

        {"port": "group2_port000_BV ALID",      "net":{"name":"slave_port000_BV ALID"}},

        {"port": "group2_port000_BREADY",      "net":{"name":"slave_port000_BREADY"}},

        {"port": "group2_port000_BID",         "net":{"name":"slave_port000_BID"}},

        {"port": "group2_port001_ARV ALID",     "net":{"name":"slave_port001_ARV ALID"}},

        {"port": "group2_port001_ARREADY",     "net":{"name":"slave_port001_ARREADY"}},

        {"port": "group2_port001_ARID",        "net":{"name":"slave_port001_ARID"}},

        {"port": "group2_port001_ARLEN",       "net":{"name":"slave_port001_ARLEN"}},

        {"port": "group2_port001_RV ALID",      "net":{"name":"slave_port001_RV ALID"}},

        {"port": "group2_port001_RREADY",      "net":{"name":"slave_port001_RREADY"}},

        {"port": "group2_port001_RLAST",       "net":{"name":"slave_port001_RLAST"}},

        {"port": "group2_port001_RID",         "net":{"name":"slave_port001_RID"}},

        {"port": "group2_port001_AWV ALID",     "net":{"name":"slave_port001_AWV ALID"}},

        {"port": "group2_port001_AWREADY",     "net":{"name":"slave_port001_AWREADY"}},

        {"port": "group2_port001_AWID",        "net":{"name":"slave_port001_AWID"}},

        {"port": "group2_port001_AWLEN",       "net":{"name":"slave_port001_AWLEN"}},

        {"port": "group2_port001_WV ALID",      "net":{"name":"slave_port001_WV ALID"}},

        {"port": "group2_port001_WREADY",      "net":{"name":"slave_port001_WREADY"}},

        {"port": "group2_port001_WLAST",       "net":{"name":"slave_port001_WLAST"}},

        {"port": "group2_port001_WID",         "net":{"name":"slave_port001_WID"}},

        {"port": "group2_port001_BV ALID",      "net":{"name":"slave_port001_BV ALID"}},

        {"port": "group2_port001_BREADY",      "net":{"name":"slave_port001_BREADY"}},

        {"port": "group2_port001_BID",         "net":{"name":"slave_port001_BID"}},

        {"port": "group2_external_unit_time_period_in",  "fixed_value":"1'b0"}

    ]

}

3.2 VARON IP 插入和执行

VARON IP插入命令为“ varon_ip_tool -i”。 它需要下面描述的一些选项,例如库目录和连接文件。

        ·执行命令:

                 varon_ip_tool -i -d <V ARON ip_tool Library Directory> -f <Connection File>

        ·执行示例:

                 varon_ip_tool -i -d /usr/lib64/varon_monitor_gui/ip_tool -f varon_ip_connection_file.json

 

将插入VARON IP的RTL文件生成到连接文件中指定的“ RTL_output_directory”目录中。

4. 执行仿真

用户可以使用插入的VARON IP运行RTL仿真。 仿真器也需要阅读VARON IP,添加以下仿真器选项要求。

        ·Cadence Xcelium (xrun)

                 -sv_root <VARON Install Directory> -sv_lib libvaron_sw

        •  Synopsys VCS

                 -svlib <VARON Install Directory>/libvaron_sw.so

        ·Mentor Questa (vsim)

                 -svlib <VARON Install Directory>/libvaron_sw

注意:请为以上所有仿真器执行64位模式。 仿真器选项可能会更改许可证文件检查的将来增强功能。

4.1 仿真器命令参数

下面是VARON使用的仿真器命令参数。

  • +VARON_FILE=<File Name>

                指定VARON IP捕获事务的结果文件名。 对文件名和扩展名没有特殊要求。

  • +VARON_GROUP0_UTIME_MODE=0/1
  • +VARON_GROUP1_UTIME_MODE=0/1 
  • ... 
  • +VARON_GROUP<n>_UTIME_MODE=0/1

指定单位时间源选择参数端口组。 当配置文件存在n + 1个端口组时,参数从GROUP0到GROUP <n>存在。

0:单位时间在VARON IP内部计数(默认)

1:VARON IP使用从输入引脚上升沿到上升沿的后续时间作为单位时间间隔。引脚名称将在下面。存在n + 1个端口组,存在group0至group <N>引脚。

group0_external_unit_time_period_in

group1_external_unit_time_period_in

. . .

group<n>_external_unit_time_period_in

 

  • +VARON_GROUP0_UTIME_PERIOD=<unit_time> 
  • +VARON_GROUP1_UTIME_PERIOD=<unit_time> 
  • ...  
  • +VARON_GROUP<n>_UTIME_PERIOD=<unit_time>

设置“ + VARON_GROUP <n> _UTIME_MODE = 0”时的单位时间间隔计数(单位时间在VARON IP内部计数)。 当配置文件存在n + 1个端口组时,参数从GROUP0到GROUP <n>存在。如果未指定,则VARON IP使用配置文件中的值。

 

  • +VARON_GROUP0_ PORT_ENABLE= 11111111 
  • +VARON_GROUP1_ PORT_ENABLE= 11111111 
  • ...  
  • +VARON_GROUP<n>_ PORT_ENABLE= 11111111

控制AXI总线捕获ON,OFF。当配置文件存在n + 1个端口组时,参数从GROUP0到GROUP <n>存在。每个自变量都有两倍的端口数量,LSB(bit0)是端口0的读控制,LSB+1(bit1)是端口0的写通道控制,依此类推...

指定二进制数,并将1的平均跟踪设置为ON。如果未设置,则所有端口都将捕获为ON。

猜你喜欢

转载自blog.csdn.net/weixin_49617016/article/details/109028231
今日推荐