Verilog ACC子程序列表

2022-05-20 14:39 更新

这里没有对所有的子程序都进行验证,由于版本或抄写问题,可能会有所疏漏,欢迎指正。建议使用时再仔细研究对应类型的子程序,多多参考其他例子中参数的类型及设置。

ACC 子程序主要分为 5 大类:句柄(handle)、后继(next)、值变链接(VCL)、取值(fetch)、杂项(miscellaneous)、修改(modify)。

句柄子程序

返回类型 调用格式及说明
handle ◆acc_handle_by_name(char *name, handle scope)
  根据名称和范围获取任何命名对象的句柄
handle ◆acc_handle_calling_mod_m()
  获取包含调用 PLI 应用程序的用户定义系统任务或函数实例的模块句柄。
handle ◆acc_handle_condition(handle object)
  获取模块路径、数据路径或时序检查终端的条件表达式的句柄
handle ◆acc_handle_conn(handle terminal)
  获取连接到原始终端、路径终端或时序检查终端的网络的句柄。
handle ◆acc_handle_datapath(handle modpath)
  获取边缘敏感模块路径的数据路径句柄。
handle ◆acc_handle_hiconn(handle port)
  获得到标量模块端口或向量端口的位选择的层次更高的网络连接。
handle ◆acc_handle_interactive_scope()
  掌握软件工具的当前交互范围。
handle ◆acc_handle_loconn(handle port)
  获取到标量模块端口或向量端口的位选择的层次较低的网络连接。
handle ◆acc_handle_modpath(handle module, char *source, char *dest, handle source, handle dest)
  获取指定源的模块路径的句柄。
handle ◆acc_handle_notifier(handle tchk)
  获取与特定时间检查关联的通知器注册。
handle ◆acc_handle_object(char *name)
  获取任何命名对象的句柄。
handle ◆acc_handle_parent(handle object)
  获取对象的父原始实例或模块实例的句柄。
handle ◆acc_handle_path(handle output, handle input)
  获取模块间路径的句柄,该路径表示从输出或输入端口到输入或输入端口的连接。
handle ◆acc_handle_pathin(handle path)
  获取连接到模块路径源的第一个网络的句柄。
handle ◆acc_handle_pathout(handle path)
  获取连接到模块路径目标的第一个网络的句柄。
handle ◆acc_handle_port(handle module, int port_index)
  根据端口的位置获取模块端口的句柄。
handle ◆acc_handle_scope(handle object)
  获取包含对象的范围的句柄。
handle ◆acc_handle_simulated_net(handle collapsed_net_handle)
  获取与作为参数传递的折叠网络关联的模拟网络。
handle ◆acc_handle_tchk(handle module, int tchk_type, char *conn_name1, int edge_type1, char *conn_name2, int edge_type2, handle conn_name1_handle, handle conn_name2_handle)
  获取模块(或单元)的指定时序检查的句柄。
handle ◆acc_handle_tchkarg1(handle tchk)
  获取连接到时序检查的第一个参数的时序检查终端的句柄。
handle ◆acc_handle_tchkarg2(handle tchk)
  获取连接到计时检查的第二个参数的计时检查终端的句柄。
handle ◆acc_handle_terminal(handle primitive, int terminal_index)
  根据原始终端的位置获取原始终端的句柄。
handle ◆acc_handle_tfarg(int arg_num)
◆acc_handle_itfarg(int arg_num, handle instance)
  获取调用 PLI 例程的用户定义系统任务或函数的指定参数的句柄。
handle ◆acc_handle_tfinst()
  获取当前用户定义的系统任务或函数调用的句柄。

后继子程序

返回类型 调用格式及说明
handle ◆acc_next(int object_type_array, handle reference, handle object)
  获取引用范围内数组中指定的每种类型的对象的句柄。
handle ◆acc_next_bit(handle reference, handle current_bit)
  获取端口或扩展向量中的位句柄。
handle ◆acc_next_cell(handle reference, hand current_cell)
  获取区域内单元实例的句柄,该区域包括模块下方的整个层次结构。
handle ◆acc_next_cell_load(handle reference, hand current_cell_load)
  获取网络上单元负载的句柄。
handle ◆acc_next_child(handle reference, handle current_child)
  获取模块子级的句柄。
handle ◆acc_next_driver(handle reference, handle current_driver)
  获取驱动网络的原始终端的句柄。
handle ◆acc_next_hiconn(handle referenct, handle current_net)
  获取到模块端口的分层更高网络连接的句柄。
handle ◆acc_next_input (handle reference, handle current_terminal)
  获取模块路径的输入路径终端、数据路径的源终端或时序检查终端的句柄。
handle ◆acc_next_load(handle reference, handle current_load)
  获取由网络驱动的原始终端的句柄。
handle ◆acc_next_loconn(handle reference, handle current_net)
  获取到模块端口的分层较低网络连接的句柄。
handle ◆acc_next_modpath(handle reference, handle path)
  获取模块的模块路径句柄。
handle ◆acc_next_net(handle reference, handle curretn_net)
  获取模块中网络的句柄。
handle ◆acc_next_output(handle reference, handle current_terminal)
  获取模块路径或数据路径的输出路径终端的句柄。
handle ◆acc_next_parameter(handle reference, handle current_parameter)
  获取模块内参数的句柄。
handle ◆acc_next_port(handle reference, handle current_port)
  获取模块端口的句柄,或连接到给定网络或注册的端口的句柄。
handle ◆acc_next_portout(handle reference, handle current_port)
  获取模块的输出或输入端口的句柄。
handle ◆acc_next_primitive(handle reference, handle current_primitive)
  获取模块中的门、开关或用户定义的原语 (UDP) 的句柄。
handle ◆acc_next_scope(handle reference, handle current_scope)
  获取范围内层次结构范围的句柄。
handle ◆acc_next_specparam(handle reference, handle current_specparam)
  获取句柄以指定模块内的块参数。
handle ◆acc_next_tchk(handle reference, handle timing_check)
  获取模块内定时检查的句柄。
handle ◆acc_next_terminal(handle reference, handle terminal)
  获取门、开关或用户定义原语的终端句柄。
handle ◆acc_next_topmod(handle top_module)
  获取顶级模块的句柄。

值变链接子程序

返回类型 调用格式及说明
void ◆acc_vcl_add(handle object, C_function unquoted name, char *user_data, int vcl_flag)
  每当对象更改值时,使用值更改信息设置对消费者例程的回调。
consumer_routine() 是要调用的 C 函数的不带引号的名称。
void ◆acc_vcl_delete(handle object, C_function consumer_routine() , char *user_data, int vcl_flag)
  删除 VCL 回调 monitor
consumer_routine() 是要调用的 C 函数的不带引号的名称。

取值子程序

返回类型 调用格式及说明
int ◆acc_fetch_argc()
  获取 Verilog 软件工具调用提供的命令行参数的数量。
char * ◆acc_fetch_argv()
  获取组成 Verilog 软件产品调用的命令行参数的字符指针数组。
double ◆acc_fetch_attribute(handle object, char *attribute, double default)
  获取在 Verilog 源描述中命名为属性的参数或 specparam 的值。
int ◆acc_fetch_attribute_int(handle object, char *attribute, int default)
  获取在 Verilog 源描述中命名为属性的参数或 specparam 的整数值。
char * ◆acc_fetch_attribute_str(handle object, char *attribute, char *default)
  获取在 Verilog 源描述中命名为属性的参数或 specparam 的值。
char * ◆acc_fetch_defname(handle object)
  获取模块实例或原始实例的定义名称。
int ◆acc_fetch_delay_mode(handle module)
  获取模块实例的延迟模式。
int ◆acc_fetch_delays(handle object, double *rise_delay, double *fall_delay, double *trunoff_delay)
◆acc_fetch_delays(handle object, double *rise_delay, double *d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12)
  获取原语、模块路径、时序检查、模块输入端口和模块间路径的现有延迟。
int ◆acc_fetch_direction(handle object)
  获取端口或终端的方向
int ◆acc_fetch_edge(handle pathio)
  获取模块路径或时序检查终端的边缘说明符。
char * ◆acc_fetch_fullname(handle object)
  获取任何命名对象或模块路径的完整层次名称。
int ◆acc_fetch_fulltype(handle object)
  获取对象的完整类型。
int ◆acc_fetch_index(handle object)
  获取端口或终端的索引号。
int ◆acc_fetch_location(p_location loc_p, handle object)
  在 Verilog-HDL 源文件中获取对象的位置。
p_location 是一个数据结构,在 acc_user.h 中定义。
char * ◆acc_fetch_name(handle object)
  获取任何命名对象或模块路径的实例名称。
int ◆acc_fetch_paramtype(handle parameter)
  获取参数或 specparam 的数据类型。
double ◆acc_fetch_paramval(handle parameter)
  获取参数或规范参数的值。
int ◆acc_fetch_polarity(handle path)
  获取路径的极性。
int ◆acc_fetch_precision()
  获取给定设计中所有 `timescale 编译器指令中指定的最小时间精度参数。
int ◆acc_fetch_pulsere(handle object, double *r1, double *e1, double *r2, double *e2, ......, double *r12, double *e12)
  获取模块路径、模块间路径或模块输入端口的当前脉冲处理 reject_limit 和 e_limit。
int ◆acc_fetch_range(handle vector, int *msb, int *lsb)
  获取向量的最高有效位和最低有效位范围值。
int ◆acc_fetch_size(handle object)
  获取网络、注册、整数、时间、实数或端口的位大小。
double ◆acc_fetch_tfarg(int arg_number)
◆acc_fetch_itfarg(int arg_number, handle tfinst)
  获取与 PLI 应用程序关联的系统任务或函数的指定参数的值; 该值作为双精度数返回
int ◆acc_fetch_tfarg_int(int arg_number)
◆acc_fetch_itfarg_int(int arg_number, handle tfinst)
  获取与 PLI 应用程序关联的系统任务或函数的指定参数的值; 该值以整数形式返回。
char * ◆acc_fetch_tfarg_str(int arg_number)
◆acc_fetch_itfarg_str(int arg_number, handle tfinst)
  获取与 PLI 应用程序关联的系统任务或函数的指定参数的值; 该值作为指向字符串的指针返回。
void ◆acc_fetch_timescale_info(handle object, p_timescale_info timescale_p)
  获取对象或活动 $timeformat 系统任务调用的时间刻度信息。
p_timescale_info 是一个数据结构,在 acc_user.h 中定义。
int ◆acc_fetch_type(handle object)
  获取对象的类型。
char * ◆acc_fetch_type_str(int type)
  获取指示其参数类型的字符串。
char * ◆acc_fetch_value(handle object, char *format, s_acc_value *value)
  获取 net、reg 或变量的逻辑或强度值
s_acc_value 是一个数据结构,在 acc_user.h 中定义。

杂项子程序

返回类型 调用格式及说明
void ◆acc_close()
  ACC 例程使用的空闲内存; 将所有配置参数重置为默认值。
handle * ◆acc_collect(handle *next_routine, handle object, int num_of_objects)
  获取与特定引用对象相关的所有对象的句柄数组; 获取收集的对象数量。
int ◆acc_compare_handles(handle object1, handle object2)
  确定两个句柄是否引用同一个对象。
int ◆acc_configure(int config_param, char *config_value)
  设置控制各种 ACC 程序操作的参数。
int ◆acc_count(handle *next_routine, handle object)
  计算与特定参考对象相关的对象数量。
int ◆acc_initialize()
  初始化 ACC 例程的环境。
int ◆acc_object_in_typelist(handle object, int object_type_array[])
  确定一个对象是否符合输入数组中指定的类型或全类型或特殊属性。
int ◆acc_object_of_type(handle object, int object_type)
  确定一个对象是否适合指定类型或完整类型,或特殊属性。
int ◆acc_product_type()
  获取调用 PLI 应用程序的软件产品类型。
char * ◆acc_product_version()
  获取链接到 ACC 例程的软件产品版本。
int ◆acc_release_object(handle object)
  释放调用 acc_next_input() 和 acc_next_output() 分配的内存。
void ◆acc_reset_buffer()
  将字符串缓冲区重置为开头。
handle ◆acc_set_interactive_scope(handle scope, int callback_flag)
  设置软件工具的交互范围。
char* ◆acc_set_scope(handle module, char *module_name)
  设置 acc_handle_object() 的范围以在设计层次结构中进行搜索时使用。
char * ◆acc_version()
  获取指向表示 ACC 例程软件版本号的字符串的指针。

修改子程序

返回类型 调用格式及说明
int ◆acc_append_delays(handle object, double *rise_delay, double *fall_delay, double *trunoff_delay)
◆acc_append_delays(handle object, double *d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12)
◆acc_append_delays(handle object, double limit)
  在原语、模块路径、模块间路径、时序检查和模块输入端口的现有延迟上添加延迟。
int ◆acc_append_pulsere(handle object, double *r1, double *e1, double *r2, double *e2, ......, double *r12, double *e12)
  为模块路径、模块间路径或模块输入端口的现有脉冲处理 reject_limit 和 e_limit 添加延迟。
int ◆acc_release_object(handle object)
  释放调用 acc_next_input() 和 acc_next_output() 分配的内存。
int ◆acc_replace_delays(handle object, double *rise_delay, double *fall_delay, double *trunoff_delay)
◆acc_replace_delays(handle object, double *d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12)
◆acc_replace_delays(handle object, double limit)
  替换原语、模块路径、时序检查、模块输入端口和模块间路径的现有延迟。
int ◆acc_replace_pulsere(handle object, double *r1, double *e1, double *r2, double *e2, ......, double *r12, double *e12)
  替换模块路径、模块间路径或模块输入端口的现有脉冲处理 reject_limit 和 e_limit。
int ◆acc_set_pulsere(handle path, double reject_percentage, double e_percentage)
  将模块路径、模块间路径或模块输入端口的脉冲处理值设置为延迟百分比。
int ◆acc_set_value(handle object, p_setval_value value_p, p_setval_delay delay_p)
  在 reg、变量、用户定义的系统函数或顺序 UDP 上设置和传播值; 程序分配一个reg或变量; 强制一个 reg、variable 或 net。
p_setval_value 和 p_setval_delay 是数据结构,在 acc_user.h 中定义。

结构体

下面对 ACC 子程序设计的一些结构体进行说明。

涉及的函数 结构体
acc_fetch_location typedef struct t_location
{
PLI_INT32 line_no;
PLI_BYTE8 *filename;
} s_location, *p_location;
p_timescale_info typedef struct t_timescale_info
{
PLI_INT16 unit;
PLI_INT16 precision;
} s_timescale_info, *p_timescale_info;
acc_fetch_value
acc_set_value
typedef struct t_setval_value
{
PLI_INT32 format;
union
{
PLI_BYTE8    *str;
PLI_INT32      scalar;
PLI_INT32      integer;
double        real;
p_acc_vecval vector;
} value;
} s_setval_value, *p_setval_value, s_acc_value, *p_acc_value;
acc_set_value typedef struct t_setval_delay
{
s_acc_time time;
PLI_INT32  model;
} s_setval_delay, *p_setval_delay;


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号