Verilog ACC子程序列表

2022-05-20 14:39 更新

這里沒有對(duì)所有的子程序都進(jìn)行驗(yàn)證,由于版本或抄寫問題,可能會(huì)有所疏漏,歡迎指正。建議使用時(shí)再仔細(xì)研究對(duì)應(yīng)類型的子程序,多多參考其他例子中參數(shù)的類型及設(shè)置。

ACC 子程序主要分為 5 大類:句柄(handle)、后繼(next)、值變鏈接(VCL)、取值(fetch)、雜項(xiàng)(miscellaneous)、修改(modify)。

句柄子程序

返回類型 調(diào)用格式及說明
handle ◆acc_handle_by_name(char *name, handle scope)
  根據(jù)名稱和范圍獲取任何命名對(duì)象的句柄
handle ◆acc_handle_calling_mod_m()
  獲取包含調(diào)用 PLI 應(yīng)用程序的用戶定義系統(tǒng)任務(wù)或函數(shù)實(shí)例的模塊句柄。
handle ◆acc_handle_condition(handle object)
  獲取模塊路徑、數(shù)據(jù)路徑或時(shí)序檢查終端的條件表達(dá)式的句柄
handle ◆acc_handle_conn(handle terminal)
  獲取連接到原始終端、路徑終端或時(shí)序檢查終端的網(wǎng)絡(luò)的句柄。
handle ◆acc_handle_datapath(handle modpath)
  獲取邊緣敏感模塊路徑的數(shù)據(jù)路徑句柄。
handle ◆acc_handle_hiconn(handle port)
  獲得到標(biāo)量模塊端口或向量端口的位選擇的層次更高的網(wǎng)絡(luò)連接。
handle ◆acc_handle_interactive_scope()
  掌握軟件工具的當(dāng)前交互范圍。
handle ◆acc_handle_loconn(handle port)
  獲取到標(biāo)量模塊端口或向量端口的位選擇的層次較低的網(wǎng)絡(luò)連接。
handle ◆acc_handle_modpath(handle module, char *source, char *dest, handle source, handle dest)
  獲取指定源的模塊路徑的句柄。
handle ◆acc_handle_notifier(handle tchk)
  獲取與特定時(shí)間檢查關(guān)聯(lián)的通知器注冊(cè)。
handle ◆acc_handle_object(char *name)
  獲取任何命名對(duì)象的句柄。
handle ◆acc_handle_parent(handle object)
  獲取對(duì)象的父原始實(shí)例或模塊實(shí)例的句柄。
handle ◆acc_handle_path(handle output, handle input)
  獲取模塊間路徑的句柄,該路徑表示從輸出或輸入端口到輸入或輸入端口的連接。
handle ◆acc_handle_pathin(handle path)
  獲取連接到模塊路徑源的第一個(gè)網(wǎng)絡(luò)的句柄。
handle ◆acc_handle_pathout(handle path)
  獲取連接到模塊路徑目標(biāo)的第一個(gè)網(wǎng)絡(luò)的句柄。
handle ◆acc_handle_port(handle module, int port_index)
  根據(jù)端口的位置獲取模塊端口的句柄。
handle ◆acc_handle_scope(handle object)
  獲取包含對(duì)象的范圍的句柄。
handle ◆acc_handle_simulated_net(handle collapsed_net_handle)
  獲取與作為參數(shù)傳遞的折疊網(wǎng)絡(luò)關(guān)聯(lián)的模擬網(wǎng)絡(luò)。
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)
  獲取模塊(或單元)的指定時(shí)序檢查的句柄。
handle ◆acc_handle_tchkarg1(handle tchk)
  獲取連接到時(shí)序檢查的第一個(gè)參數(shù)的時(shí)序檢查終端的句柄。
handle ◆acc_handle_tchkarg2(handle tchk)
  獲取連接到計(jì)時(shí)檢查的第二個(gè)參數(shù)的計(jì)時(shí)檢查終端的句柄。
handle ◆acc_handle_terminal(handle primitive, int terminal_index)
  根據(jù)原始終端的位置獲取原始終端的句柄。
handle ◆acc_handle_tfarg(int arg_num)
◆acc_handle_itfarg(int arg_num, handle instance)
  獲取調(diào)用 PLI 例程的用戶定義系統(tǒng)任務(wù)或函數(shù)的指定參數(shù)的句柄。
handle ◆acc_handle_tfinst()
  獲取當(dāng)前用戶定義的系統(tǒng)任務(wù)或函數(shù)調(diào)用的句柄。

后繼子程序

返回類型 調(diào)用格式及說明
handle ◆acc_next(int object_type_array, handle reference, handle object)
  獲取引用范圍內(nèi)數(shù)組中指定的每種類型的對(duì)象的句柄。
handle ◆acc_next_bit(handle reference, handle current_bit)
  獲取端口或擴(kuò)展向量中的位句柄。
handle ◆acc_next_cell(handle reference, hand current_cell)
  獲取區(qū)域內(nèi)單元實(shí)例的句柄,該區(qū)域包括模塊下方的整個(gè)層次結(jié)構(gòu)。
handle ◆acc_next_cell_load(handle reference, hand current_cell_load)
  獲取網(wǎng)絡(luò)上單元負(fù)載的句柄。
handle ◆acc_next_child(handle reference, handle current_child)
  獲取模塊子級(jí)的句柄。
handle ◆acc_next_driver(handle reference, handle current_driver)
  獲取驅(qū)動(dòng)網(wǎng)絡(luò)的原始終端的句柄。
handle ◆acc_next_hiconn(handle referenct, handle current_net)
  獲取到模塊端口的分層更高網(wǎng)絡(luò)連接的句柄。
handle ◆acc_next_input (handle reference, handle current_terminal)
  獲取模塊路徑的輸入路徑終端、數(shù)據(jù)路徑的源終端或時(shí)序檢查終端的句柄。
handle ◆acc_next_load(handle reference, handle current_load)
  獲取由網(wǎng)絡(luò)驅(qū)動(dòng)的原始終端的句柄。
handle ◆acc_next_loconn(handle reference, handle current_net)
  獲取到模塊端口的分層較低網(wǎng)絡(luò)連接的句柄。
handle ◆acc_next_modpath(handle reference, handle path)
  獲取模塊的模塊路徑句柄。
handle ◆acc_next_net(handle reference, handle curretn_net)
  獲取模塊中網(wǎng)絡(luò)的句柄。
handle ◆acc_next_output(handle reference, handle current_terminal)
  獲取模塊路徑或數(shù)據(jù)路徑的輸出路徑終端的句柄。
handle ◆acc_next_parameter(handle reference, handle current_parameter)
  獲取模塊內(nèi)參數(shù)的句柄。
handle ◆acc_next_port(handle reference, handle current_port)
  獲取模塊端口的句柄,或連接到給定網(wǎng)絡(luò)或注冊(cè)的端口的句柄。
handle ◆acc_next_portout(handle reference, handle current_port)
  獲取模塊的輸出或輸入端口的句柄。
handle ◆acc_next_primitive(handle reference, handle current_primitive)
  獲取模塊中的門、開關(guān)或用戶定義的原語 (UDP) 的句柄。
handle ◆acc_next_scope(handle reference, handle current_scope)
  獲取范圍內(nèi)層次結(jié)構(gòu)范圍的句柄。
handle ◆acc_next_specparam(handle reference, handle current_specparam)
  獲取句柄以指定模塊內(nèi)的塊參數(shù)。
handle ◆acc_next_tchk(handle reference, handle timing_check)
  獲取模塊內(nèi)定時(shí)檢查的句柄。
handle ◆acc_next_terminal(handle reference, handle terminal)
  獲取門、開關(guān)或用戶定義原語的終端句柄。
handle ◆acc_next_topmod(handle top_module)
  獲取頂級(jí)模塊的句柄。

值變鏈接子程序

返回類型 調(diào)用格式及說明
void ◆acc_vcl_add(handle object, C_function unquoted name, char *user_data, int vcl_flag)
  每當(dāng)對(duì)象更改值時(shí),使用值更改信息設(shè)置對(duì)消費(fèi)者例程的回調(diào)。
consumer_routine() 是要調(diào)用的 C 函數(shù)的不帶引號(hào)的名稱。
void ◆acc_vcl_delete(handle object, C_function consumer_routine() , char *user_data, int vcl_flag)
  刪除 VCL 回調(diào) monitor
consumer_routine() 是要調(diào)用的 C 函數(shù)的不帶引號(hào)的名稱。

取值子程序

返回類型 調(diào)用格式及說明
int ◆acc_fetch_argc()
  獲取 Verilog 軟件工具調(diào)用提供的命令行參數(shù)的數(shù)量。
char * ◆acc_fetch_argv()
  獲取組成 Verilog 軟件產(chǎn)品調(diào)用的命令行參數(shù)的字符指針數(shù)組。
double ◆acc_fetch_attribute(handle object, char *attribute, double default)
  獲取在 Verilog 源描述中命名為屬性的參數(shù)或 specparam 的值。
int ◆acc_fetch_attribute_int(handle object, char *attribute, int default)
  獲取在 Verilog 源描述中命名為屬性的參數(shù)或 specparam 的整數(shù)值。
char * ◆acc_fetch_attribute_str(handle object, char *attribute, char *default)
  獲取在 Verilog 源描述中命名為屬性的參數(shù)或 specparam 的值。
char * ◆acc_fetch_defname(handle object)
  獲取模塊實(shí)例或原始實(shí)例的定義名稱。
int ◆acc_fetch_delay_mode(handle module)
  獲取模塊實(shí)例的延遲模式。
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)
  獲取原語、模塊路徑、時(shí)序檢查、模塊輸入端口和模塊間路徑的現(xiàn)有延遲。
int ◆acc_fetch_direction(handle object)
  獲取端口或終端的方向
int ◆acc_fetch_edge(handle pathio)
  獲取模塊路徑或時(shí)序檢查終端的邊緣說明符。
char * ◆acc_fetch_fullname(handle object)
  獲取任何命名對(duì)象或模塊路徑的完整層次名稱。
int ◆acc_fetch_fulltype(handle object)
  獲取對(duì)象的完整類型。
int ◆acc_fetch_index(handle object)
  獲取端口或終端的索引號(hào)。
int ◆acc_fetch_location(p_location loc_p, handle object)
  在 Verilog-HDL 源文件中獲取對(duì)象的位置。
p_location 是一個(gè)數(shù)據(jù)結(jié)構(gòu),在 acc_user.h 中定義。
char * ◆acc_fetch_name(handle object)
  獲取任何命名對(duì)象或模塊路徑的實(shí)例名稱。
int ◆acc_fetch_paramtype(handle parameter)
  獲取參數(shù)或 specparam 的數(shù)據(jù)類型。
double ◆acc_fetch_paramval(handle parameter)
  獲取參數(shù)或規(guī)范參數(shù)的值。
int ◆acc_fetch_polarity(handle path)
  獲取路徑的極性。
int ◆acc_fetch_precision()
  獲取給定設(shè)計(jì)中所有 `timescale 編譯器指令中指定的最小時(shí)間精度參數(shù)。
int ◆acc_fetch_pulsere(handle object, double *r1, double *e1, double *r2, double *e2, ......, double *r12, double *e12)
  獲取模塊路徑、模塊間路徑或模塊輸入端口的當(dāng)前脈沖處理 reject_limit 和 e_limit。
int ◆acc_fetch_range(handle vector, int *msb, int *lsb)
  獲取向量的最高有效位和最低有效位范圍值。
int ◆acc_fetch_size(handle object)
  獲取網(wǎng)絡(luò)、注冊(cè)、整數(shù)、時(shí)間、實(shí)數(shù)或端口的位大小。
double ◆acc_fetch_tfarg(int arg_number)
◆acc_fetch_itfarg(int arg_number, handle tfinst)
  獲取與 PLI 應(yīng)用程序關(guān)聯(lián)的系統(tǒng)任務(wù)或函數(shù)的指定參數(shù)的值; 該值作為雙精度數(shù)返回
int ◆acc_fetch_tfarg_int(int arg_number)
◆acc_fetch_itfarg_int(int arg_number, handle tfinst)
  獲取與 PLI 應(yīng)用程序關(guān)聯(lián)的系統(tǒng)任務(wù)或函數(shù)的指定參數(shù)的值; 該值以整數(shù)形式返回。
char * ◆acc_fetch_tfarg_str(int arg_number)
◆acc_fetch_itfarg_str(int arg_number, handle tfinst)
  獲取與 PLI 應(yīng)用程序關(guān)聯(lián)的系統(tǒng)任務(wù)或函數(shù)的指定參數(shù)的值; 該值作為指向字符串的指針返回。
void ◆acc_fetch_timescale_info(handle object, p_timescale_info timescale_p)
  獲取對(duì)象或活動(dòng) $timeformat 系統(tǒng)任務(wù)調(diào)用的時(shí)間刻度信息。
p_timescale_info 是一個(gè)數(shù)據(jù)結(jié)構(gòu),在 acc_user.h 中定義。
int ◆acc_fetch_type(handle object)
  獲取對(duì)象的類型。
char * ◆acc_fetch_type_str(int type)
  獲取指示其參數(shù)類型的字符串。
char * ◆acc_fetch_value(handle object, char *format, s_acc_value *value)
  獲取 net、reg 或變量的邏輯或強(qiáng)度值
s_acc_value 是一個(gè)數(shù)據(jù)結(jié)構(gòu),在 acc_user.h 中定義。

雜項(xiàng)子程序

返回類型 調(diào)用格式及說明
void ◆acc_close()
  ACC 例程使用的空閑內(nèi)存; 將所有配置參數(shù)重置為默認(rèn)值。
handle * ◆acc_collect(handle *next_routine, handle object, int num_of_objects)
  獲取與特定引用對(duì)象相關(guān)的所有對(duì)象的句柄數(shù)組; 獲取收集的對(duì)象數(shù)量。
int ◆acc_compare_handles(handle object1, handle object2)
  確定兩個(gè)句柄是否引用同一個(gè)對(duì)象。
int ◆acc_configure(int config_param, char *config_value)
  設(shè)置控制各種 ACC 程序操作的參數(shù)。
int ◆acc_count(handle *next_routine, handle object)
  計(jì)算與特定參考對(duì)象相關(guān)的對(duì)象數(shù)量。
int ◆acc_initialize()
  初始化 ACC 例程的環(huán)境。
int ◆acc_object_in_typelist(handle object, int object_type_array[])
  確定一個(gè)對(duì)象是否符合輸入數(shù)組中指定的類型或全類型或特殊屬性。
int ◆acc_object_of_type(handle object, int object_type)
  確定一個(gè)對(duì)象是否適合指定類型或完整類型,或特殊屬性。
int ◆acc_product_type()
  獲取調(diào)用 PLI 應(yīng)用程序的軟件產(chǎn)品類型。
char * ◆acc_product_version()
  獲取鏈接到 ACC 例程的軟件產(chǎn)品版本。
int ◆acc_release_object(handle object)
  釋放調(diào)用 acc_next_input() 和 acc_next_output() 分配的內(nèi)存。
void ◆acc_reset_buffer()
  將字符串緩沖區(qū)重置為開頭。
handle ◆acc_set_interactive_scope(handle scope, int callback_flag)
  設(shè)置軟件工具的交互范圍。
char* ◆acc_set_scope(handle module, char *module_name)
  設(shè)置 acc_handle_object() 的范圍以在設(shè)計(jì)層次結(jié)構(gòu)中進(jìn)行搜索時(shí)使用。
char * ◆acc_version()
  獲取指向表示 ACC 例程軟件版本號(hào)的字符串的指針。

修改子程序

返回類型 調(diào)用格式及說明
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)
  在原語、模塊路徑、模塊間路徑、時(shí)序檢查和模塊輸入端口的現(xiàn)有延遲上添加延遲。
int ◆acc_append_pulsere(handle object, double *r1, double *e1, double *r2, double *e2, ......, double *r12, double *e12)
  為模塊路徑、模塊間路徑或模塊輸入端口的現(xiàn)有脈沖處理 reject_limit 和 e_limit 添加延遲。
int ◆acc_release_object(handle object)
  釋放調(diào)用 acc_next_input() 和 acc_next_output() 分配的內(nèi)存。
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)
  替換原語、模塊路徑、時(shí)序檢查、模塊輸入端口和模塊間路徑的現(xiàn)有延遲。
int ◆acc_replace_pulsere(handle object, double *r1, double *e1, double *r2, double *e2, ......, double *r12, double *e12)
  替換模塊路徑、模塊間路徑或模塊輸入端口的現(xiàn)有脈沖處理 reject_limit 和 e_limit。
int ◆acc_set_pulsere(handle path, double reject_percentage, double e_percentage)
  將模塊路徑、模塊間路徑或模塊輸入端口的脈沖處理值設(shè)置為延遲百分比。
int ◆acc_set_value(handle object, p_setval_value value_p, p_setval_delay delay_p)
  在 reg、變量、用戶定義的系統(tǒng)函數(shù)或順序 UDP 上設(shè)置和傳播值; 程序分配一個(gè)reg或變量; 強(qiáng)制一個(gè) reg、variable 或 net。
p_setval_value 和 p_setval_delay 是數(shù)據(jù)結(jié)構(gòu),在 acc_user.h 中定義。

結(jié)構(gòu)體

下面對(duì) ACC 子程序設(shè)計(jì)的一些結(jié)構(gòu)體進(jìn)行說明。

涉及的函數(shù) 結(jié)構(gòu)體
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;


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)