主要内容

比较使用Cosimulation H金宝appDL和仿真软件的代码覆盖率

这个例子展示了如何实现完整的代码覆盖率的HDL巡航控制器设计使用仿真软件®和高密度脂蛋白模拟器。金宝app

介绍

HDL代码生成与该模型通过高密度脂蛋白编码器™巡航控制器的仿真软件行为模型。金宝app试验台模型提供验证的正确性HDL代码通过比较HDL cosimulation块的输出与原来的行为。testcases试验台模型通过仿真软件设计验证器生成™从原始行为模型实现完整的模型覆盖。金宝app这个例子表明,这些自动生成的测试也实现完整的HDL代码覆盖率。你不需要仿真软件设计验证器安装运金宝app行这个例子。

打开模型模型金宝app

如果您使用的是ModelSim或QuestaSim模型cruise_control_modelsim.slx应该开放。如果您使用的是Xcelium,关闭ModelSim模型和打开模型cruise_control_incisive.slx

注意,代码覆盖率在ModelSim体育功能是一个可选特性。确保你的版本ModelSim的适当的代码覆盖许可运行这个示例。

ModelSim %:modelName =“cruise_control_modelsim”;open_system (modelName);
Xcelium %:modelName =“cruise_control_incisive”;open_system (modelName);

重置设置时钟,时钟使高密度脂蛋白的模拟

时钟、复位和时钟使信号不属于仿真软件模拟。金宝app我们为它们定义驱动程序使用“Pre-simulation Tcl命令”“模拟”标签cosimulation块的面具。我们还设置了“时间高密度脂蛋白cosimulation开始之前模拟器运行”,高密度脂蛋白已经成功摆脱了重置之前输入和输出数据交换值。

ModelSim:

Xcelium:

高密度脂蛋白的生成的波形:

Tcl力命令是用来产生控制信号的波形:

  1. 时钟周期是10 ns

  2. 时钟使信号是活跃在37 ns。

  3. 复位信号是断言从0到27 ns。

cosimulation开始时间应该与高密度脂蛋白时钟的下降沿,以避免竞态条件自HDL信号改变他们的价值观的前沿HDL时钟。因此,该参数的值应该是一个整数倍数10纳秒的时钟周期。

我们也想跑过去HDL设计重置,但停止之前第一个活跃时钟通过clk_enable边缘。这是匹配行为块,更新其内部状态仿真开始后。

基于上述考虑,选择“时间运行HDL模拟器cosimulation开始前”设置为40 ns。在运行每个testcase,“Pre-simulation Tcl命令”是首先应用于高密度脂蛋白模拟器。然后HDL模拟器进步40 ns应用复位的时间,时钟,clk_enable cosimulation之前开始的信号。

发射HDL Cosimulation模拟器

Modelsim:

%的命令来编译代码覆盖率和调用Modelsim启用。tclCmds = {“vlib工作”,%创建ModelSim库“威科姆公司+封面cruise_hdlsrc / PI_Controller.vhd ',%编译硬件描述语言(VHDL)代码启用了代码覆盖率“威科姆公司+封面cruise_hdlsrc / Controller.vhd ',%编译硬件描述语言(VHDL)代码启用了代码覆盖率“v金宝appsimulink覆盖work.Controller”,%负载模拟“把“准备cosimulation…””,};%现在我们推出HDL模拟器,等待它做好准备。vsim (“tclstart”,tclCmds);disp (“等待HDL模拟器开始…”);processid = pingHdlSim (240);disp (“HDL模拟器准备cosimulate。”);

Xcelium:

%的命令来编译代码覆盖率和调用Xcelium启用。tclCmds = {“exec xmvhdl -64位-v93 cruise_hdlsrc / PI_Controller.vhd ',%编译硬件描述语言(VHDL)的代码“exec xmvhdl -64位-v93 cruise_hdlsrc / Controller.vhd ',%编译硬件描述语言(VHDL)的代码“exec xmelab -64位覆盖所有-vhdl_time_precision 1 ns访问+ wc控制器”,%启用了报道的精心设计“hdl金宝appsimulink -covoverwrite控制器”,%负载模拟“把“准备cosimulation…””,};%现在我们推出HDL模拟器,等待它做好准备。nclaunch (“tclstart”tclCmds,“runmode”,“CLI”,“libfile”,“liblfihdls_gcc44.so”);disp (“等待HDL模拟器开始…”);processid = pingHdlSim (240);disp (“HDL模拟器准备cosimulate。”);

运行仿真

有九个测试试验台模型。这个例子与所有用例运行这个模型生成代码覆盖率结果。完成每个cosimulation会话后,不需要重新启动模拟器自高密度脂蛋白HDL信号正确重置初每个模拟。每次仿真后,添加一个短暂停,确保时间高密度脂蛋白模拟器更新下一个迭代之前报道的结果。

%运行cosimulationk = 1: 9 signalbuilder ([modelName' /输入'),“activegroup”、k);%选择testcasesim (modelName);%运行仿真暂停(5);%暂停覆盖写入数据库结束

观察代码覆盖率结果

高密度脂蛋白模拟器积累覆盖我们遍历所有测试点。当模拟完成,代码覆盖率达到100%。

ModelSim:您可以检查覆盖率结果“覆盖”标签的UI。

Xcelium:我们将覆盖率结果,使用“imc”工具来可视化结果。

%转储和可视化报道的结果tclHdlSim (覆盖您测试的);系统(“imc gui负载测试&’);