嵌入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 配置
JSON 文件 [输入]
-i, –inject VARON IP 导入器
-f, –connection 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_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生成
VARON IP生成与创建的配置文件,请使用“varon_ip_tool -g”命令指定VARON IP工具提供的库目录。
·执行命令:
varon_ip_tool -g -d -c
·示例:
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 插入和执行
VARON IP插入命令为“ varon_ip_tool -i”。 它需要下面描述的一些选项,例如库目录和连接文件。
·执行命令:
varon_ip_tool -i -d -f
·执行示例:
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 -sv_lib libvaron_sw
• Synopsys VCS
-svlib /libvaron_sw.so
·Mentor Questa (vsim)
-svlib /libvaron_sw
注意:请为以上所有仿真器执行64位模式。 仿真器选项可能会更改许可证文件检查的将来增强功能。
4.1 仿真器命令参数
下面是VARON使用的仿真器命令参数。
指定VARON IP捕获事务的结果文件名。 对文件名和扩展名没有特殊要求。
- +VARON_GROUP0_UTIME_MODE=0/1
- +VARON_GROUP1_UTIME_MODE=0/1
- …
- +VARON_GROUP_UTIME_MODE=0/1
指定单位时间源选择参数端口组。 当配置文件存在n + 1个端口组时,参数从GROUP0到GROUP 存在。
0:单位时间在VARON IP内部计数(默认)
1:VARON IP使用从输入引脚上升沿到上升沿的后续时间作为单位时间间隔。引脚名称将在下面。存在n + 1个端口组,存在group0至group 引脚。
group0_external_unit_time_period_in
group1_external_unit_time_period_in
. . .
group_external_unit_time_period_in
- +VARON_GROUP0_UTIME_PERIOD=
- +VARON_GROUP1_UTIME_PERIOD=
- …
- +VARON_GROUP_UTIME_PERIOD=
设置“ + VARON_GROUP _UTIME_MODE = 0”时的单位时间间隔计数(单位时间在VARON IP内部计数)。 当配置文件存在n + 1个端口组时,参数从GROUP0到GROUP 存在。如果未指定,则VARON IP使用配置文件中的值。
- +VARON_GROUP0_ PORT_ENABLE= 11111111
- +VARON_GROUP1_ PORT_ENABLE= 11111111
- …
- +VARON_GROUP_ PORT_ENABLE= 11111111
控制AXI总线捕获ON,OFF。当配置文件存在n + 1个端口组时,参数从GROUP0到GROUP 存在。每个自变量都有两倍的端口数量,LSB(bit0)是端口0的读控制,LSB+1(bit1)是端口0的写通道控制,依此类推…
指定二进制数,并将1的平均跟踪设置为ON。如果未设置,则所有端口都将捕获为ON。