阅读(772)
赞(1)
Verilog ACC子程序列表
2022-05-20 13:55:56 更新
这里没有对所有的子程序都进行验证,由于版本或抄写问题,可能会有所疏漏,欢迎指正。建议使用时再仔细研究对应类型的子程序,多多参考其他例子中参数的类型及设置。
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; |