本发明属于电路处理技术领域,特别涉及一种快速获取数字门级电路内部节点仿真状态的方法,可用于基于仿真的硅后验证中跟踪信号提取阶段。
背景技术:
业内周知,集成电路芯片的设计大致分为前端逻辑设计综合与后端物理设计综合两个部分。其中前段逻辑设计包括基本的rtl编程和仿真、逻辑综合、静态时序分析sta和形式验证等多个步骤;后端物理设计包括时钟树综合、布局布线、功耗分析、物理验证和可制造性设计等多个步骤。在芯片设计中,前端逻辑的定义、开发、综合、集成和验证固然重要,但是随着半导体制造工艺的发展,一块芯片要去流片,进而量产,其后端物理设计显得更加关键。
为了保证芯片功能实现的正确性,在芯片的设计过程中需要进行验证。芯片验证一般有以下几种方法:软件仿真、硬件加速器验证和形式验证。其中:
软件仿真是指利用仿真激励,通过仿真软件,对soc体系结构进行功能验证。软件仿真分为前端仿真和后端仿真。前端仿真是指对soc的rtl代码进行仿真,主要验证体系结构功能的正确性;后端仿真是指利用时序信息文件sdf,对soc的门级网表进行仿真,主要验证体系结构实现的正确性,重点是验证时序是否收敛。
门级网表通常传递了电路连接方面的信息,一般会使用硬件表述语言,例如verilog、vhdl等来进行表述、验证和仿真。用传统的仿真工具进行仿真验证时,需要对每一个基准电路单独进行编写测试代码文件,对于大型的门级电路十分不方便。现有的门级网表仿真器虽然很好的解决了这个问题,但是随着soc设计技术手段的发展和越来越多样化的应用需求,soc体系结构越来越复杂,芯片规模越来越庞大,现有仿真器的仿真难度越来越大,所消耗的时间越来越长,严重阻碍了验证工作的进展。
技术实现要素:
本发明的目的在于针对上述已有技术的不足,提出一种快速获取数字门级电路内部节点仿真状态的方法,以降低门级电路仿真复杂度和难度,加快获取数字门级电路内部节点状态,减少仿真验证所消耗的时间。
为实现上述目的,本发明的技术方案如下:
(1)根据给定的门级电路,得到门极电路的外部输入、外部输出以及内部节点的连接关系;
(2)用硬件语言描述门级电路逻辑关系,生成门级电路逻辑描述文件;
(2a)新建门级电路逻辑描述文件cell.v;
(2b)遍历整个门级电路,对其中门电路的种类数以及d触发器的节点数目进行统计;
(2c)遍历整个门级电路,对每个门电路种类的输入输出管脚数进行统计;
(2d)根据门级电路中各门电路的逻辑关系及输入输出管脚数,在cell.v文件中编写其对应硬件逻辑模块,其中对d触发器单元还要写带异步复位的时序逻辑。
(3)根据门极电路的外部输入、外部输出以及内部节点的连接关系,将门级电路转换成rtl级描述单元;
(4)根据门极电路的外部输入、外部输出以及内部节点的连接关系,用软件语言生成modelsim仿真的测试文件;
(5)将rtl级描述单元,门级电路逻辑描述文件和测试文件加入到商用modelsim仿真软件中进行仿真,得到门级电路内部节点的仿真状态。
本发明相对于现有技术具有以下优点:
1.本发明通过将门级电路转换成rtl级描述单元,采用modelsim进行仿真,大大减少了仿真的复杂度和仿真时间;
2.本发明通过为rtl级描述单元编写测试文件,引入了复位信号,提高了门级电路仿真的准确性。
附图说明
图1为本发明使用的门级电路图;
图2为本发明的实现流程图。
具体实施方式
为使本发明目的、技术方案以及优点更加清楚明白,以下参照附图并举实施例,对本发明进行近一步的详细说明。
参照附图1,本发明针对的门级电路,包括4个外部输入端g0、g1、g2、g3,6个d触发器dff节点dffg4、dffg5、dffg6、dffg7、dffg8、dffg9,3个非门not节点notg15、notg16、notg20,1个与门and节点andg19,2个或门or节点org17、org18,4个或非门nor节点norg11、norg12、norg13、norg14,1个与非门节点nandg10和2个外部输出g21、g22。
参照附图2,本发明基于门级电路仿真的关键节点提取方法,包括以下步骤:
步骤1:根据图1给定的门级电路,得到门极电路的外部输入、外部输出以及内部节点的连接关系。
(1a)初始化存放门级电路外部输入、外部输出和内部节点信息的结构体;
(1b)设定第一缓存数组buf[],将门级电路以字符的形式存入buf[];
(1c)按行对第一缓存数组buf[]中的特定字符进行检索,获取门极电路的外部输入、外部输出以及内部节点的连接关系,并存入相应的结构体中。
步骤2:用硬件语言描述门级电路逻辑关系,生成门级电路逻辑描述文件。
(2a)新建门级电路逻辑描述文件cell.v;
(2b)遍历整个门级电路,对其中门电路的种类数以及d触发器的节点数目进行统计,根据图1可知,该门级电路中门电路的种类为not、nor、and、or、nand、dff等6种,d触发器dff的节点数目为6;
(2c)遍历整个门级电路,对每个门电路种类的输入输出管脚数进行统计,由图1所示的门级电路可知,在该门极电路中,非门not为单输入单输出的门电路,d触发器dff为带时钟信号clk和低复位信号rst的单输入单输出的门电路,其他均为双输入单输出的门电路;
(2d)根据门级电路中各门电路的逻辑关系及输入输出管脚数,在cell.v文件中编写其对应的硬件逻辑模块,且对d触发器单元还要写带异步复位的时序逻辑。
步骤3:根据门极电路的外部输入、外部输出以及内部节点的连接关系,将门级电路转换成rtl级描述单元。
(3a)新建rtl级描述单元vv.v文件;
(3b)遍历整个门级电路的外部输入节点,将门级电路的外部输入g0、g1、g2、g3转化成rtl级输入信号g0、g1、g2、g3,并引入时钟信号clk和低复位信号rst,写入到vv.v文件中;
(3c)遍历整个门级电路的外部输出节点,将门级电路的外部输出g21、g22转化成rtl级输出信号g21、g22,写入到vv.v文件中;
(3d)遍历整个门级电路的内部节点,从所有的内部节点中找到dff节点,将相关信息存入到dff节点对应的结构体中;
(3e)遍历整个门级电路的内部节点,根据步骤(2d)中生成的硬件逻辑模块,在vv.v文件中对内部节点进行例化。
步骤4:根据门极电路的外部输入、外部输出以及内部节点的连接关系,用软件语言生成modelsim仿真的测试文件。
(4a)新建modelsim仿真测试文件test.v;
(4b)遍历整个门级电路的外部输入节点,将门级电路的外部输入g0、g1、g2、g3转换成reg型信号g0、g1、g2、g3,写入到test.v文件中;
(4c)遍历整个门级电路的外部输出节点,将门级电路的外部输出g21、g22转换成wire型信号g21、g22,写入到test.v文件中;
(4d)根据门级电路rtl级描述单元特有格式,生成门级电路例化模块,写入到test.v文件中;
(4e)在test.v文件中,初始化时钟信号clk和低复位信号rst;
(4f)在test.v文件中,将低复位信号rst拉为高电平1,在本实施例中,将时钟信号设置为50mhz;
(4g)在test.v文件中,用随机数函数random,在时钟信号的控制下生成外部激励信号,同时新建input.v文件,将每个外部输入信号在每个时钟下的状态保存至文件input.v中。
步骤5:将rtl级描述单元,门级电路逻辑描述文件和测试文件加入到商用modelsim仿真软件中进行仿真。
(5a)在modelsim商用仿真软件中,新建一个仿真工程;
(5b)在工程中添加rtl级描述单元vv.v、门级电路逻辑描述文件cell.v和测试文件test.v;
(5c)对工程中的rtl级描述单元vv.v、门级电路逻辑描述文件cell.v和测试文件test.v进行编译;
(5d)在modelsim软件的自带work库中,找到测试文件test.v,并将其添加到仿真工程中;
(5e)双击仿真工程中的simulation类型文件,开始仿真;
(5f)仿真结束后,新建state.v文件,将仿真过程中内部所有d触发器每个时钟的输出状态记录到文件state.v中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不限于此,任何熟悉该技术领域的技术人员在本发明揭露的技术范围内,均可轻易想到进行改变或替换,例如除了本实施例,利用本发明还能对大型门级网表进行关键节点的提取,进而加快大型门级网表正确性的验证和检错,这些都涵盖在本发明的保护范围内。