[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN106155903B - 用于系统设计验证的装置和方法 - Google Patents

用于系统设计验证的装置和方法 Download PDF

Info

Publication number
CN106155903B
CN106155903B CN201510328734.7A CN201510328734A CN106155903B CN 106155903 B CN106155903 B CN 106155903B CN 201510328734 A CN201510328734 A CN 201510328734A CN 106155903 B CN106155903 B CN 106155903B
Authority
CN
China
Prior art keywords
tcl
test
interface
dpi
gasket
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510328734.7A
Other languages
English (en)
Other versions
CN106155903A (zh
Inventor
芦湘冬
梅汪生
P·U·纳帕德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
NXP USA Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NXP USA Inc filed Critical NXP USA Inc
Priority to CN201510328734.7A priority Critical patent/CN106155903B/zh
Priority to US14/887,335 priority patent/US9690888B2/en
Publication of CN106155903A publication Critical patent/CN106155903A/zh
Application granted granted Critical
Publication of CN106155903B publication Critical patent/CN106155903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本申请涉及用于系统设计验证的装置和方法。用于系统设计验证的装置具有测试用例模型和测试平台,所述测试用例模型用于用脚本语言(诸如TCL)编译测试用例,所述测试平台包括待测试设计并且用硬件描述语言(诸如SymtemVerilog)运行。将由测试用例模块生成的激励源通过基于`C′的接口垫圈施加到测试平台。

Description

用于系统设计验证的装置和方法
技术领域
本发明一般涉及通过软件模拟进行的系统设计的测试,且更具体地,涉及一种结合由脚本语言和建模语言生成的激励源的验证过程。
背景技术
集成电路发展一般包括设计阶段和用于确定设计是否如预期地工作的验证阶段。验证阶段通常利用软件模拟器(或测试平台),其功能包括接收用硬件描述语言(诸如SystemVerilog)写成的软件,所述硬件描述语言建立电路设计的模型。该模型被用于模拟该设计对通过测试用例(test case)施加的激励源的响应。观察结果并将结果用于调试设计。测试用例一般是一组测试条件,并且以已知的输入和期望的输出为特征。最耗时的部分是创建测试,并且然后在设计改变时修正创建的测试。SystemVerilog是目前普遍用于测试平台和测试用例的语言。脚本语言(诸如工具命令语言TCL)和/或建模语言对于测试用例的仿真可以是有用的。
因此,能够将已经通过脚本语言编码的验证组件结合到SystemVerilog测试平台中是有利的。
附图说明
本发明及其目的和优点可结合附图通过参考下面对优选实施例的描述被最好地理解,所述附图中:
图1是根据本发明一个实施例的系统验证装置的简化原理方框图;
图2是例示了图1的系统验证装置运行方法的一个示例的简化流程图;以及
图3是例示了根据本发明的实施例的系统验证装置中的信号和数据的流程的简化流程图。
具体实施方式
下面结合附图阐述的详细说明旨在作为对本发明的目前优选实施例的描述,并且不旨在代表可以实施本发明的唯一形式。可以理解的是旨在被包含在本发明的精神和范围内的不同的实施例可完成相同或等同的功能。在附图中,自始至终相同的数字被用于指示相同的要素。而且,术语“包括”、“包含”或者其任何其它变形都旨在覆盖非排他性的包括,使得包括一系列要素或步骤的模块、电路、设备组件、结构和方法步骤不仅仅包括那些要素,还可以包括其他未明确地列出的或固有地存在于这些模块、电路、设备组件或步骤中的要素或步骤。通过“包括...”进而述及的要素或步骤,在没有其他限制的情况下,不排除包括所述要素或步骤的另外的相同的要素或步骤的存在。
在一个实施例中,本发明提供了一种用于系统设计验证的装置。该装置包括:用于用脚本语言编译的包括至少一个激励源的测试用例的测试用例模块;包括待测试设计(DUT)且用硬件描述语言(HDL)运行的测试平台;以及基于编程语言′C′的、连接在该测试用例模块和该测试平台之间的、用于联系施加到该DUT的激励源的接口。
在另一个实施例中,本发明提供一种用于系统设计验证的方法。该方法包括:用脚本语言编译的包括至少一个激励源的测试用例;将该激励源施加到包括DUT的且通过基于′C′的接口用HDL运行的测试平台。
有利地,本发明容许使用诸如TCL脚本、Matlab和LabView语言来为基于SystemVerilog的测试平台提供激励源。在一个实施例中,′C′命令进程被用于调用TCL、Matlab或LabView激励源。进一步的优点是,简化了测试平台结构编译分区并且节省了编译时间,使得模拟更加高效并可重复使用。在一个实施例中,在一个中间阶段使用C编程语言允许SystemVerilog测试平台使用脚本语言和建模语言激励源,以便在仅完成一次编译的情况下运行模拟。本发明还可以被用于仿真测试,其中前端测试平台可以被重复使用并且节省编译时间以用于不同的测试用例。
现在参考图1,示出了系统验证装置100的简化原理方框图。该系统验证装置100包括激励源发生器101和SystemVerilog测试平台102。SystemVerilog测试平台包括待测试设计(DUT)。生成的激励源被施加到该DUT并通过与期望的响应比较来分析响应。例如,该DUT通常是逻辑设计的软件模型。该SystemVerilog测试平台102响应于来自激励源发生器101的测试激励源,模拟对应于软件模型的硬件设备的行为。该SystemVerilog测试平台102使用硬件描述语言(HDL)运行,在这个示例中是SystemVerilog。
由测试平台100执行的典型的测试进程具有两个部分,即编译部分和模拟部分。在编译流程中,DUT被编译成一个或多个内部库。在模拟流程中,基于该编译结果通过SystemVerilog测试平台运行模拟。
更详细地参考激励源发生器101,Matlab模块103将Matlab代码编译成作为测试用例和测试数据的第一′C′库104。这包括脚本命令和脚本形式的激励源。该第一′C′库104还包括一个C到API(应用程序接口)的接口函数。被编译成′C′库的Matlab参考模型不能直接被用作激励源,因此该′C′库-API接口的能力将激励源概括并设置成标准任务或方法以被随后的阶段处理。这些标准任务可包括详细的激励源配置信息。第一DPI-′C′模块105被连接到该第一′C′库104并执行直接编程接口到下一阶段。该′C′方法在SystemVerilog测试平台中不能被直接调用,但是通过直接编程接口,′C′方法能够被映射到SystemVerilog。类似的,SystemVerilog也能被映射到′C′。
提供LabView模块106用于将LabView代码编译成第二′C′库107。在这个示例中,第二C库107是现场可编程门阵列(FPGA)。该第二′C′库107被连接到第二DPI-′C′模块108。该第二DPI-′C′模块108执行与第一DPI-′C′模块105执行的功能类似的功能。
TCL测试用例模块109编译激励源(用脚本语言)和测试用例(也用脚本语言)用于验证测试。测试用例包括所有用于控制整个激励源流的TCL命令。按下面所解释的方式,脚本测试用例用命令(诸如′trigger event触发事件′、′wait event等待事件′、′time delay时间延迟′以及′end of test测试结束′)控制在SystemVerilog测试平台102中的整个通信流。该TCL测试用例模块109被连接到TCL-′C′-DPI模块110。TCL文件不能直接通过DPI被SystemVerilog使用,因此,保存在TCL-′C′-DPI模块110中的′C′扩展名(或中间)文件被用于将脚本命令映射到DPI任务。该TCL-′C′-DPI模块110还包括垫圈(Gasket)SystemVerilog文件。该模块110有利于数据的通信和在TCL测试用例模块109和SystemVerilog测试平台102之间的反馈。凭借该TCL-′C′-DPI模块110,TCL测试用例能被转变成DPI任务。该第一和第二DPI-′C′模块105、108和TCL-′C′-DPI模块110被连接到接口垫圈111。
垫圈111将TCL、Matlab和LabView信息转变成测试平台信息。有三个文件被该垫圈处理。TCL测试用例和′C′测试用例是顶级测试用例,其包括分别基于对TCL测试用例模块109以及Matlab和LabView模块103、106的编译的整个激励源流。垫圈111被配置成调用要么来自TCL进程要么来自库104、107的′C′任务的′generate transaction生成事务′、′delayspecial time延迟特定时间′、′trigger event′、′wait event′和′end_of_test′任务。该测试用例被包括所有TCL进程和′C′任务定义的扩展名′C′文件调动。这里最低级的文件被定义为′垫圈文件′,其用SystemVerilog语言定义了′put′事务、′get′事务、′triggerevent′、′wait event′、′info_logger′和′end_of_test′。在扩展名′C′文件中,TCL进程和′C′任务每个通过DPI与一个SystemVerilog垫圈文件联系在一起。垫圈111的输出被反馈给SystemVerilog测试平台102。在SystemVerilog测试平台102处通过垫圈111接收到的SystemVerilog激励源将调动生成的TCL测试用例。该SystemVerilog测试平台102可以通过垫圈111发送数据和/或响应反馈给TCL测试用例模块109。
参照图2,在步骤201示出的流程图中,启动TCL测试用例并且该TCL测试用例模块109配置若干命令。
在步骤202,由TCL测试用例模块109生成的TCL命令通过垫圈111(TCL命令在此被转换成测试平台信息)被送到SystemVerilog测试平台102。
在步骤203,允许经过特定的时间段以便在仿真运行开始之前确保命令已经完成。
在步骤204,命令事件被TCL测试用例模块109触发,并在SystemVerilog测试平台102被接收。
在步骤205,等待命令被TCL测试用例模块109生成,并在SystemVerilog测试平台102被接收。
在步骤206,来自DUT的数据反馈从SystemVerilog测试平台102被发送到激励源发生器。这个数据反馈包括触发的事件和SystemVerilog测试平台结果。
在步骤207,如果所有命令还没有完成,过程转到步骤202,在步骤202中由TCL测试用例模块109发送另一个命令。
如果已经完成所有命令,那么在步骤208,在激励源发生器111中比较数据。从DUT接收的返回数据与TCL测试用例模块109中生成的TCL测试用例数据进行比较。在一个示例中,该比较在TCL测试用例模块109中完成。
在步骤209,过程结束。
图3例示了根据本发明一个实施例的系统验证装置中信号和数据的流程的示例。
在301的第一步中′初始化协议命令′中,在SystemVerilog测试平台中并且使用合适的协议,生成用于接收TCL事务的空SystemVerilog激励源。
接下来,在TCL测试用例中生成写入SystemVerilog事务。在这个步骤中,定义的TCL任务′send_wr_command′被垫圈111调用。使用′C′扩展名文件并且通过导出DPI-C,put_int指令被映射到该TCL任务′PUT′。因此,在302,写入命令被发送到SystemVerilog测试平台。
在303,从TCL测试用例发送延迟指令到SystemVerilog测试平台。这要求TCL_DELAY任务被(垫圈111)调用。通常,在脚本或建模语言中没有时间概念,因此在SystemVerilog中的垫圈111中定义delay_t任务。使用′C′扩展名文件并通过导出DPI-C,′delay_t′指令被映射到TCL任务′TCL_DELAY′。
在304,SystemVerilog测试平台等待触发事件的接收。在此期间,模拟程序停止。
在305,触发指令被TCL测试用例发送到SystemVerilog测试平台。这要求TCL_TRIGGER任务要被(垫圈111)调用。通常,在脚本或建模语言中没有事件概念,因此在SystemVerilog的垫圈111中定义′trigger_e′任务。使用′C′扩展名文件并且通过导出DPI-C,′trigger_e′指令被映射到TCL任务′TCL_TRIGGER′。
在306,一旦接收到触发指令,SystemVerilog测试平台从TCL测试用例接收数据并根据常规技术对其处理。SystemVerilog测试平台将来自TCL测试用例的事务数据放进初始化命令中。
在307,在SystemVerilog测试平台已经完成写入命令后,它触发事件′w_event′,事件′w_event′被发送到TCL测试用例。然后在SystemVerilog测试平台中的模拟过程被停止,直到接收到进一步的触发指令。
在308,一旦收到′w_event′,TCL_WAIT任务被垫圈调用。由于在脚本或建模语言中没有事件概念,在垫圈111中定义′wait_e′任务到等待事件′w_event′。使用′C′扩展名文件并通过导出DPI-C,′wait_e′被映射到′TCL_WAIT′。
在309,从TCL测试用例发送延迟指令到SystemVerilog测试平台(如在步骤303中)。这要求TCL_DELAY任务要被(垫圈111)调用。通常地,在脚本或建模语言中没有时间概念,因此在SystemVerilog中的垫圈111中定义delay_t任务。使用′C′扩展名文件并通过导出DPI-C,′delay_t′指令被映射到TCL任务′TCL_DELAY′。
接下来,在该TCL测试用例中生成读取SystemVerilog事务。在这步中,定义的TCL任务′send_wr_commond′被垫圈111调用。使用′C′扩展名文件并通过导出DPI-C,put_int指令被映射到TCL任务′PUT′。因此,在310,读取命令被发送到SystemVerilog测试平台。该步骤类似于步骤302,读取和写入命令之间的区别在读取_写入控制位。
在311,类似于步骤305的方式,TCL测试用例发送触发指令到SystemVerilog测试平台。这需要TCL_TRIGGER任务被(垫圈111)调用。通常地,在脚本或建模语言中没有事件概念,因此在SystemVerilog的垫圈111中定义′trigger_e′任务。使用′C′扩展名文件并通过导出DPI-C,′trigger_e′指令被映射到TCL任务′TCL_TRIGGER′。
在312,一旦接收到触发指令,该SystemVerilog测试平台接收来自TCL测试用例的数据并根据常规技术对其处理。
在313,在SystemVerilog测试平台完成读取命令后,该读取数据被赋到垫圈变量。
在314(在类似于步骤307的步骤中),SystemVerilog测试平台触发被发送到该TCL测试用例的事件′w_event′。
在315,(在类似于步骤308的步骤中),一旦接收到′w_event′,TCL_WAIT任务被垫圈调用。由于在脚本或建模语言中没有事件概念,在垫圈111中定义′wait_e′任务到等待事件′w_event′。使用′C′扩展名文件并通过导出DPI-C,′wait_e′被映射到′TCL_WAIT′。
在316,该TCL测试用例从垫圈获取读取数据。使用′C′扩展名文件并通过导出DPI-C,′get_int′指令被映射到TCL任务′GET′。
在317,在TCL测试用例中,将读取数据与期望的数据比较。如果有其他要执行的命令,过程将回到步骤302。
在步骤318,测试用例指示′end of test′。由于在脚本或建模语言中没有事件概念,在SystemVerilog的垫圈中定义′end of test′任务,以触发事件′t_event′并启动′end_flag′。使用′C′扩展名文件并通过导出DPI-C,′end of test′被映射到TCL任务′TCL_ENDS′。
当测试结束时,并且SystemVerilog测试平台已经核查并确认已启动′end_flag′时,然后在319,SystemVerilog测试平台已经完成它的执行阶段并在320退出过程。
对本发明的优选实施例的说明已经以解释和说明为目的被呈现,而不是旨在穷举或将本发明限制于所公开的形式。本领域技术人员将会理解的是在不脱离其广泛的发明的概念前提下可以对上面描述的实施例做出改变。因此,可以理解的是该发明没有被限制于所公开的特定实施例,而是覆盖了如所附权利要求所限定的本发明的精神和范围内的变形。

Claims (3)

1.一种用于系统设计验证的装置,包括:
激励源发生器,用于用脚本语言编译测试用例,其中测试用例包括至少一个激励源;
测试平台,包括待测试设计,其中测试平台响应于至少一个激励源而模拟待测试设计的行为,并且测试平台用硬件描述语言运行;和
接口垫圈,连接在所述激励源发生器和所述测试平台之间,用于将至少一个激励源传送到待测试设计,其中接口垫圈包括使用硬件描述语言定义事务的文件;
激励源发生器进一步包括将Matlab代码编译为第一‘C’库的Matlab模块;所述第一‘C’库包括C到应用程序接口API的接口函数;
所述装置进一步包括连接到第一‘C’库的第一DPI-‘C’模块,第一DPI-‘C’模块对所述接口垫圈执行直接编程接口;
激励源发生器进一步包括将LabView代码编译为第二‘C’库的LabView模块;所述第二‘C’库包括现场可编程门阵列FPGA;
所述装置进一步包括连接到第二‘C’库的第二DPI-‘C’模块,第二DPI-‘C’模块对所述接口垫圈执行直接编程接口。
2.根据权利要求1所述的装置,其中所述接口垫圈被设置成使用‘C’命令进程从所述测试用例调用至少一个激励源。
3.根据权利要求1所述的装置,其中所述脚本语言是工具命令语言TCL而所述硬件描述语言是SystemVerilog,并且其中所述接口垫圈包括‘C’扩展名文件,以及其中所述接口被设置成通过在‘C’扩展名文件中将TCL命令映射到直接编程接口DPI任务来将TCL信息转换成SystemVerilog信息。
CN201510328734.7A 2015-04-20 2015-04-20 用于系统设计验证的装置和方法 Active CN106155903B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510328734.7A CN106155903B (zh) 2015-04-20 2015-04-20 用于系统设计验证的装置和方法
US14/887,335 US9690888B2 (en) 2015-04-20 2015-10-20 Method and apparatus for system design verification

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510328734.7A CN106155903B (zh) 2015-04-20 2015-04-20 用于系统设计验证的装置和方法

Publications (2)

Publication Number Publication Date
CN106155903A CN106155903A (zh) 2016-11-23
CN106155903B true CN106155903B (zh) 2021-05-07

Family

ID=57129128

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510328734.7A Active CN106155903B (zh) 2015-04-20 2015-04-20 用于系统设计验证的装置和方法

Country Status (2)

Country Link
US (1) US9690888B2 (zh)
CN (1) CN106155903B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106777571A (zh) * 2016-11-30 2017-05-31 北京广利核系统工程有限公司 一种基于System Verilog实现的可编程逻辑算法块自动化验证平台
CN107908541B (zh) * 2017-07-26 2020-10-30 平安壹钱包电子商务有限公司 接口测试方法、装置、计算机设备及存储介质
CN107656731A (zh) * 2017-10-10 2018-02-02 株洲欧格瑞传动股份有限公司 一种Matlab模型的一键编译方法
US11295051B2 (en) * 2018-03-13 2022-04-05 Hcl Technologies Limited System and method for interactively controlling the course of a functional simulation
US10789403B1 (en) 2019-05-14 2020-09-29 International Business Machines Corporation Grouping and partitioning of properties for logic verification
CN113505066B (zh) * 2021-07-09 2024-07-12 合肥肇观电子科技有限公司 用于验证被测试模块的方法以及验证系统
US12038819B2 (en) * 2022-06-14 2024-07-16 Intel Corporation Hardware software communication channel to support direct programming interface methods on FPGA-based prototype platforms

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549119A (zh) * 2003-05-07 2004-11-24 华为技术有限公司 逻辑仿真测试系统和方法
CN101286182A (zh) * 2008-05-16 2008-10-15 浙江大学 一种用于嵌入式处理器功能验证的动态仿真平台方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275868B1 (en) 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US6571373B1 (en) 2000-01-31 2003-05-27 International Business Machines Corporation Simulator-independent system-on-chip verification methodology
WO2001067311A2 (en) 2000-03-07 2001-09-13 Electronics For Imaging, Inc. Tcl pli, a framework for reusable, run time configurable test benches
US7472055B2 (en) * 2002-06-03 2008-12-30 Broadcom Corporation Method and system for deterministic control of an emulation
US7797677B1 (en) 2005-11-08 2010-09-14 Xilinx, Inc. Using scripts for netlisting in a high-level modeling system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549119A (zh) * 2003-05-07 2004-11-24 华为技术有限公司 逻辑仿真测试系统和方法
CN101286182A (zh) * 2008-05-16 2008-10-15 浙江大学 一种用于嵌入式处理器功能验证的动态仿真平台方法

Also Published As

Publication number Publication date
US9690888B2 (en) 2017-06-27
CN106155903A (zh) 2016-11-23
US20160306913A1 (en) 2016-10-20

Similar Documents

Publication Publication Date Title
CN106155903B (zh) 用于系统设计验证的装置和方法
JP7270764B2 (ja) 人工知能チップ検証
US9836372B1 (en) Device verification system with firmware universal verification component
RU2473115C2 (ru) Способ автоматического генерирования сценария для проверки правильности функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для применения способа
US8402438B1 (en) Method and system for generating verification information and tests for software
CN104461810A (zh) 一种提高嵌入式处理器功能验证效率的方法
US8132161B2 (en) Semiconductor test program debug device
US20150234965A1 (en) Method and an apparatus for automatic processor design and verification
US9235670B2 (en) Method and an apparatus for automatic generation of verification environment for processor design and verification
CN110442528B (zh) 一种基于安全计算机仿真软件的列控软件跨平台运行的系统及方法
CN105138457A (zh) 汽车开放系统架构操作系统的分析和验证装置及其方法
US8265918B1 (en) Simulation and emulation of a circuit design
US8140315B2 (en) Test bench, method, and computer program product for performing a test case on an integrated circuit
US7895575B2 (en) Apparatus and method for generating test driver
CN119272674B (zh) 生成式RISC-V SoC的软硬件调试方法、系统、设备及存储介质
CN116069635A (zh) Soc系统的测试方法、装置、计算机设备及存储介质
Jaffuel et al. LEIRIOS test generator: Automated test generation from B models
Kaijser et al. Towards simulation-based verification for continuous integration and delivery
CN110955605A (zh) 一种cpu验证单步动态执行的方法
Huggi et al. Design and verification of memory elements using python
CN116450431A (zh) Cpu参考模型的指令功能测试系统及其方法、计算机设备和存储介质
Park et al. SITAF: simulation-based interface testing automation framework for robot software component
Zhou et al. Hardware software co-design for automotive CPS using architecture analysis and design language
KR100939642B1 (ko) 소프트웨어 기반의 스티뮬러스를 생성하는 검증 장치, 상기검증 장치를 이용한 검증 방법 및 소프트웨어 기반의 스티뮬러스를 생성하는 프로그램이 구비된 컴퓨터 기록매체
US12078676B1 (en) System and method for device under test (DUT) validation reuse across multiple platforms

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Texas in the United States

Applicant after: NXP America Co Ltd

Address before: Texas in the United States

Applicant before: Fisical Semiconductor Inc.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant